我有一个来 self 的一个项目的小代码 fragment 。它在脚本中用于拖放菜单。脚本附加到每个项目上,可以拖动。
public void OnDrag(PointerEventData eventData){
if (isPlantLocked())
return;
#if UNITY_EDITOR
transform.position = Input.mousePosition;
#endif
#if UNITY_ANDROID
transform.position = Input.touches[0].position;
#endif
}
我得到一个异常(我拖动项目的每一帧),Input.touches.Length 为零,但这个代码区域应该只在 android 上使用,在移动版本上一切正常。
现在我的问题是如何摆脱异常以及平台依赖项何时起作用?
Best Answer-推荐答案 strong>
如果您查看“build设置”窗口,有一个“切换平台”按钮可以调整您当前的运行时平台并触发相应指令的编译,即使在编辑器中也是如此。这意味着 UNITY_ANDROID 和 UNITY_EDITOR 都可以同时为 true 因为 UNITY_EDITOR 意味着你正在运行Unity 应用程序本身。
由于您正在检查输入类型,而第一个是针对鼠标的,您可能希望将 UNITY_EDITOR 替换为 UNITY_STANDALONE ,然后确保当您在编辑器中进行测试,您已经设置了正确的当前平台。
另一种选择(如果您永远不会发布独立版本并且它仅适用于非 PC 平台,则更好)是首先检查 UNITY_EDITOR ,然后检查 #else if 进入其他选项:
#if UNITY_EDITOR
transform.position = Input.mousePosition;
#elif UNITY_ANDROID
transform.position = Input.touches[0].position;
#endif
通过这种方式,您可以更轻松地更换当前的平台设置。
关于android - Unity3D的Plattform依赖编译什么时候工作?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/47582175/
|