【发布时间】: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