Unity日常踩坑1

2017.12.5

1、协程

在Start()里面 调用StartCoroutine方法开启协程( StartCoroutine(NetManager.WaitAndUpdate()); )

public static IEnumerator WaitAndUpdate()
    {
        while(true)
        {
            yield return new WaitUntil(() =>
            {
                return loginResultSign != -1 || nameResultSign != -1;
            });
            Debug.Log("wait end");
            if (loginResultSign != -1)
            {
                updateDic[1000](loginResultSign);
                loginResultSign = -1;
            }
            if (nameResultSign != -1)
            {


            }
        }
    }

协程有一个yield return ... 表示等待或者延时, 代码中的表示等待参数中返回true就会执行下面的语句,否则就会停在那里,程序去执行别的逻辑,参数是一个func委托

2、该方法必须在主线程调用(使用协程解决)

3、加载模块时出错 :loop or previous error loading module 'LoginState.lua

原因:1.lua 和 2.lua 两个文件 在1中require了2, 那么2就不用再require1也可以使用1.lua中的类了。在一个文件中require另一个文件一次,两个文件的类都可以相互使用

4、不能再lua main函数中使用while循环否则Unity会卡死

5、lua文件中定义的类,使用类中成员时要加上类名.成员

6、lua中boolean类型,false和nil都为假

7、状态机

8、purmvc

9、加载新的场景以后,没有办法获取新场景的对象

解决:加载场景代码和find object代码不要在同一代码块。 比如在上一场景点击按钮加载场景,加载场景的代码就写在按钮的响应方法中。进入新场景后再获取对象。

10、未解决DonDestroyOnLoad时候的问题:从场景A到场景B中,调用了一次Don,如果从B切换回来A,又会在调用一次Don,这个时候之前的A还没有被释放

你可能感兴趣的:(Unity)