【问题标题】:void Awake () doesn't execute in Android, Unity 3Dvoid Awake () 在 Android、Unity 3D 中不执行
【发布时间】:2017-08-17 13:16:35
【问题描述】:

我正在尝试在 Android 上执行 Awake() 函数,但出现了问题。

这是一个网络应用程序,一切正常,但我想做的是当应用程序在 Android 设备上启动时,它会作为客户端自动连接服务器,无需触摸屏幕:

public class Automatic_Client : NetworkBehaviour {

    public NetworkManager manager;

    public void Awake()
    {   
        if(Application.platform == RuntimePlatform.Android)
            manager.StartClient ();

如果我更改 WindowsEditor 的条件并在 PC 上尝试它可以正常工作,但在 Android 中却不行。当我在 Android 上调试它时,似乎 void Awake() 在通过触摸屏从 HUD 中选择“LAN Client”后执行......它在void Start() 中也不起作用。请帮忙!

Unity 5.4, Android 6.0.1

【问题讨论】:

  • Awake 不能作为协程使用,如果你的 manager.Startclient 是一个新线程或协程这将导致错误。
  • @joreldraw 为什么说协程和线程?我认为这无关紧要,因为 OP 没有提到它们正在被使用。
  • 行为及其父游戏对象是否在启动时启用? Awake() 只会在启用后运行。
  • @Programmer 因为确保他们使用线程或协程来管理自动连接、超时、重试等。如果从 Awake 调用,则无法工作。 Awake 只是为了初始化 Start 时需要的值。

标签: c# android unity3d networking 3d


【解决方案1】:

只是猜测,但可能是您已将 Awake() 设置为公开。我会将其声明为私有/无限定符,看看是否有帮助。

否则,您可以尝试使用Start() 而不是Awake(),或者公开您从启动脚本调用的Initialize() 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    相关资源
    最近更新 更多