如何隐藏移动平台构建上的某些对象

Viv*_*vek 3 c# unity-game-engine

我为 PC 和移动设备(如 android、ios)创建了游戏。我在屏幕上添加了一些游戏组件来帮助移动用户导航播放器。

问题是游戏手柄也出现在 PC 版本上。

如何隐藏此类组件,使其不显示在游戏的非移动平台上。

Pro*_*mer 5

检测平台是否不是具有Application.isMobilePlatformAwake功能的移动设备Start,然后停用操纵杆游戏对象。确保操纵杆 UI 内容有一个父 GameObject。您应该停用该父游戏对象。

public GameObject joyStick;

void Awake()
{
    if (!Application.isMobilePlatform)
    {
        joyStick.SetActive(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

再次,禁用 GameObject,而不是组件。这还应该禁用子对象和附加到它们的脚本。

编辑

谢谢。我还希望将操纵杆脚本、游戏对象排除在非移动平台构建中。这也管得着吗?

否。如果您希望将其排除在场景中,那么在为操纵杆创建父对象后,将其设为预制件,然后从场景或“层次结构”选项卡中将其删除。仅当这是移动设备时,您才可以实例化预制件。

public GameObject canvas;
public GameObject joyStickPrefab;

void Awake()
{
    if (Application.isMobilePlatform)
    {
        Instantiate(joyStickPrefab, canvas.transform, false);
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,预制件仍将包含在构建中,但不会出现在场景中或加载到内存中,除非它是移动设备。实际上没有办法将预制件或资产排除在构建之外。您可以使用 Unity 的预处理器指令排除基于平台的脚本,但不能排除游戏杆中 UI 项目的资产。