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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值