找回密码
 立即注册
查看: 582|回复: 2

Unreal 4 发布,每月 19 美金就有访问源码的权限,有人尝试过吗?

[复制链接]
发表于 2020-12-24 09:30 | 显示全部楼层 |阅读模式
Unreal 4 发布,每月 19 美金就有访问源码的权限,有人尝试过吗?
发表于 2020-12-24 09:40 | 显示全部楼层
我尝试了,刚下载完成,在mac上使用,结果启动不起来,正在补下windows版。

可以在淘宝120rmb代购。

======

今天心血来潮,在mac上编译editor,尝试解决问题,结果发现一个bug, 这是一个经常犯的错误,代码如下:
// Open HID Manager – this will cause add device callbacks for all presently connected devices
IOReturn Result = IOHIDManagerOpen( HIDManager,kIOHIDOptionsTypeNone );
if( Result != kIOReturnSuccess )
{
IOHIDManagerUnscheduleFromRunLoop( HIDManager,CFRunLoopGetCurrent(), kCFRunLoopDefaultMode );
IOHIDManagerRegisterDeviceMatchingCallback( HIDManager,NULL, NULL );
IOHIDManagerRegisterDeviceRemovalCallback( HIDManager,NULL, NULL );
CFRelease( HIDManager );
HIDManager = NULL;
return;
}
for ( int32 ControllerIndex=0; ControllerIndex <MAX_NUM_HIDINPUT_CONTROLLERS; ++ControllerIndex )
{
FControllerState& ControllerState =ControllerStates[ControllerIndex];
FMemory::Memzero( &ControllerState,sizeof(FControllerState) );
ControllerState.ControllerId = ControllerIndex;
}
可以看到当不能正确IOHIDManagerOpen后,代码进行了一些清理后就return了,导致后面的MemZero ControllerStates不能执行,而后面的代码会尝试使用这个不可预期的内存,导致访问违例(AV),修改方法也很简单,就是把
for ( int32 ControllerIndex=0; ControllerIndex < MAX_NUM_HIDINPUT_CONTROLLERS; ++ControllerIndex )
{
FControllerState& ControllerState = ControllerStates[ControllerIndex];
FMemory::Memzero( &ControllerState, sizeof(FControllerState) );
ControllerState.ControllerId = ControllerIndex;
}
移动到HIDInputInterface类构造函数的最前面,保证无论如何,都能正确ZeroMemory这个数组,这样问题解决了。顺便把代码提交给了官方。

如果代码不好阅读,可以去我的博客 解决一个mac版unreal4 bug
发表于 2020-12-24 09:49 | 显示全部楼层
好像不支持国内用户,我去付款发现China选项是灰色的。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-26 08:22 , Processed in 0.124349 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表