Unreal 4 发布,每月 19 美金就有访问源码的权限,有人尝试过吗?
Unreal 4 发布,每月 19 美金就有访问源码的权限,有人尝试过吗? 我尝试了,刚下载完成,在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;
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;
FMemory::Memzero( &ControllerState, sizeof(FControllerState) );
ControllerState.ControllerId = ControllerIndex;
}
移动到HIDInputInterface类构造函数的最前面,保证无论如何,都能正确ZeroMemory这个数组,这样问题解决了。顺便把代码提交给了官方。
如果代码不好阅读,可以去我的博客 解决一个mac版unreal4 bug 好像不支持国内用户,我去付款发现China选项是灰色的。
页:
[1]