Unity3D 中的程序后台运行

本文通过实验探讨了Unity3D中Application.runInBackground属性对Socket通信的影响,发现即使该属性为false,Unity仍能接收Socket消息。文章提供了测试代码示例,展示了如何根据Socket数据切换后台运行状态。

Unity3D中程序后台运行,我原本认为当Application.runInBackground=false时,Socket保持连接,但是不接受数据,经过测试并非如此,当Application.runInBackground=false时,同样可以接受来自Socket发送的消息。下面是我测试的代码:

 UnitySocket clientSocket;
    string message = "";
    // Use this for initialization
    void Start () {
        XmlHelper helper = new XmlHelper();
        helper.LoadData(Application.dataPath+"/"+"Config.xml");
        clientSocket=new UnitySocket();
        clientSocket.OnDataByteIn += new UnitySocket.delDataByteIn(clientSocket_OnDataByteIn);
    }

    void clientSocket_OnDataByteIn(string data)
    {
        Debug.Log("Unity3d Rev:"+data);
        message = data;

        if (data == "aaa")
        {
            Application.runInBackground = false;
        }
        else if (data == "bbb")
        {
            Application.runInBackground = true;
        }
    }
    
    // Update is called once per frame
    void Update () {
    
    }

    void OnGUI()
    {
        GUI.Label(new Rect(0,0,200,30),message);
    }

 

测试结果:

Unity3d默认设置runInBackground=false开启Unity3D 给socket发送数据,unity3d的OnGUI没显示任何内容,但是Socket是有数据产生的。只是OnGUI暂时停止了工作,

当我发送bbb到应用程序时:

GUI有内容显示了:

说明后台还是可以处理数据的。

转载于:https://www.cnblogs.com/WilliamJiang/archive/2013/04/02/2994901.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值