OGeek|极客世界-中国程序员成长平台

标题: android - Unity3D的Plattform依赖编译什么时候工作? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-9 06:50
标题: android - Unity3D的Plattform依赖编译什么时候工作?

我有一个来 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-推荐答案


如果您查看“build设置”窗口,有一个“切换平台”按钮可以调整您当前的运行时平台并触发相应指令的编译,即使在编辑器中也是如此。这意味着 UNITY_ANDROIDUNITY_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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://www.ogeek.cn/) Powered by Discuz! X3.4