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还没有被释放