Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Application.platform==RuntimePlatform.Android不工作_C#_Unity3d - Fatal编程技术网

C# Application.platform==RuntimePlatform.Android不工作

C# Application.platform==RuntimePlatform.Android不工作,c#,unity3d,C#,Unity3d,正如我在另一个问题中所说,没有人回答: 我发现我的应用程序无法运行的问题是以下几行: if (Application.platform == RuntimePlatform.Android) { } 如果我删除了该条件,应用程序就会正常工作,但当我将其添加回应用程序时,它就不起作用了。跟随你的帖子,我做了一个实验 首先,我尝试在Remote5上运行下面的代码,并将其分别作为单个应用程序运行 void Update () { Debug.LogFormat ("Applicatio

正如我在另一个问题中所说,没有人回答:

我发现我的应用程序无法运行的问题是以下几行:

if (Application.platform == RuntimePlatform.Android) {

} 

如果我删除了该条件,应用程序就会正常工作,但当我将其添加回应用程序时,它就不起作用了。

跟随你的帖子,我做了一个实验

首先,我尝试在Remote5上运行下面的代码,并将其分别作为单个应用程序运行

void Update () {
    Debug.LogFormat ("Application.platform: {0}", Application.platform.ToString ());
}
在Remote 5应用程序上,控制台打印:

Application.platform: OSXEditor
Application.platform: Android
在单个应用程序上,控制台打印:

Application.platform: OSXEditor
Application.platform: Android
显然,
Application.platform
在Unity Remote 5中没有像您预期的那样工作,因此当您将代码放入if语句中时,代码就无法工作。实际上,您的代码在不使用Remote5的情况下可以完美地工作

有两种方法可以解决此问题:

  • 不要使用Unity Remote 5测试您的应用程序。虽然这是一种非常方便的测试游戏的方法,但有时当你将应用程序部署到真实设备上时,它并不像你预期的那样工作

  • 使用。我建议您使用此工具在不同平台上开发游戏。正如文件所建议的那样:

  • 使用RuntimePlatform和平台相关编译的区别在于,使用RuntimePlatform在运行时进行评估,而平台相关编译在编译时进行评估。因此,如果您可以使用依赖于平台的编译,请毫不犹豫地使用它。在大多数情况下,您可以使用两者获得相同的功能,并且使用defines将生成更小更快的代码,因为您不需要在运行时进行检查。在某些情况下,运行时需要RuntimePlatform

    下面是一个仅在具有平台依赖标志的Android平台上运行代码的示例

        void Update () {
    #if UNITY_ANDROID && !UNITY_EDITOR
            // Run your Android only code here.
    #endif
        }
    

    跟随你们的帖子,我做了一个实验

    首先,我尝试在Remote5上运行下面的代码,并将其分别作为单个应用程序运行

    void Update () {
        Debug.LogFormat ("Application.platform: {0}", Application.platform.ToString ());
    }
    
    在Remote 5应用程序上,控制台打印:

    Application.platform: OSXEditor
    
    Application.platform: Android
    
    在单个应用程序上,控制台打印:

    Application.platform: OSXEditor
    
    Application.platform: Android
    
    显然,
    Application.platform
    在Unity Remote 5中没有像您预期的那样工作,因此当您将代码放入if语句中时,代码就无法工作。实际上,您的代码在不使用Remote5的情况下可以完美地工作

    有两种方法可以解决此问题:

  • 不要使用Unity Remote 5测试您的应用程序。虽然这是一种非常方便的测试游戏的方法,但有时当你将应用程序部署到真实设备上时,它并不像你预期的那样工作

  • 使用。我建议您使用此工具在不同平台上开发游戏。正如文件所建议的那样:

  • 使用RuntimePlatform和平台相关编译的区别在于,使用RuntimePlatform在运行时进行评估,而平台相关编译在编译时进行评估。因此,如果您可以使用依赖于平台的编译,请毫不犹豫地使用它。在大多数情况下,您可以使用两者获得相同的功能,并且使用defines将生成更小更快的代码,因为您不需要在运行时进行检查。在某些情况下,运行时需要RuntimePlatform

    下面是一个仅在具有平台依赖标志的Android平台上运行代码的示例

        void Update () {
    #if UNITY_ANDROID && !UNITY_EDITOR
            // Run your Android only code here.
    #endif
        }
    

    您是否将此代码作为单个应用程序在Android设备上运行?我这样问是因为你在前一篇文章中提到你在Unity Remote 5上运行。你是作为一个单独的应用程序在Android设备上运行这段代码吗?我这样问是因为你在前一篇文章中提到你在Unity Remote 5上运行。所以基本上我需要为不同的平台编写单独的代码?如果我编译了代码,应用程序将正常运行,如果每次我想测试它,我会制作一个apk?这取决于你想要实现什么。如果该功能只在移动平台上工作,我认为构建apk并测试它是唯一的方法。但如果该功能不是特定于平台的,您仍然可以使用Unity Editor对其进行测试。我将我的代码作为我构建的apk进行了测试,它可以正常工作,但现在有两个问题,第一个问题是我为返回到前一场景所做的按钮没有显示在屏幕上,看起来所有内容都有点放大,第二个问题是“Application.Quit();“我没有在做我做的按钮,我相信这些与这个问题无关。如果你愿意,你可以在其他帖子中询问。好的,我会做的。所以基本上我需要为不同的平台做单独的代码?如果我编译了代码,应用程序会正常运行,如果每次我想测试它,我会做一个apk?这取决于你想做什么。”我知道。如果该功能只在移动平台上运行,我认为构建apk并测试它是唯一的方法。但是如果该功能不是特定于平台的,你仍然可以使用Unity Editor进行测试。我将我的代码作为我构建的apk进行了测试,它可以正常工作,但现在有两个问题,第一个是我为返回到前一场景所做的按钮不起作用在屏幕上,看起来一切都有点放大了,第二件事是“Application.Quit();他说:“我做的一个按钮没有工作,我相信这与这个问题无关。如果你愿意,你可以在其他帖子中询问。好的,我会做的。”。