uLua 热更新 增加Manager管理类时报错问题解决

今天增加了一个场景类 但是报错 虽然有很多种 但是还是记下来了

以前增加过 Photon 服务器NetPhotonManager类  是好使的 流程如下:

cs方面:

StartUpCommand.cs 仿照 Execute 方法中的其他增加该类

ManagerName.cs按照其他修改

LuaHelper.cs 按照其他添加该类

Base.cs 按照其他添加该类(这个类没有修改也不影响 我试过 不加也没事 也没空研究为什么。。。知道了就行了)

clear一下 generate all  build。。。


lua代码方面省略 流程的话用过的人都知道的

最后在lua的sceneMgr:CreateScene就不好使

经过调试 是在cs增加类的时候就出错了

StartUpcommand.cs中原先我的代码是这样的:

 public override void Execute(IMessage message) {
        if (!Util.CheckEnvironment()) return;


        GameObject gameMgr = GameObject.Find("GlobalGenerator");
        if (gameMgr != null) {
            AppView appView = gameMgr.AddComponent<AppView>();
        }
        //-----------------关联命令-----------------------
        AppFacade.Instance.RegisterCommand(NotiConst.DISPATCH_MESSAGE, typeof(SocketCommand));


        //-----------------初始化管理器-----------------------
        AppFacade.Instance.AddManager<LuaManager>(ManagerName.Lua);
        AppFacade.Instance.AddManager<PanelManager>(ManagerName.Panel);
        AppFacade.Instance.AddManager<SoundManager>(ManagerName.Sound);
        AppFacade.Instance.AddManager<TimerManager>(ManagerName.Timer);
       // AppFacade.Instance.AddManager<NetworkManager>(ManagerName.Network);
        AppFacade.Instance.AddManager<NetPhotonManager>(ManagerName.Network);
        AppFacade.Instance.AddManager<ResourceManager>(ManagerName.Resource);
        AppFacade.Instance.AddManager<ThreadManager>(ManagerName.Thread);
        AppFacade.Instance.AddManager<ObjectPoolManager>(ManagerName.ObjectPool);
        AppFacade.Instance.AddManager<GameManager>(ManagerName.Game);
      
        


        Debug.LogWarning("the startupcommand is start the manager is loading");
       
    }

可以看到 我注释的那一段是原来的网络管理器

而我直接在下面直接加的代码  好使

注意 就是这个问题  我把sceneManager在这里增加的时候 是放到了最下面

实质上就是这一步放到了GameManager下面 就发生了错误

错误如下:

   AppFacade.Instance.AddManager<GameManager>(ManagerName.Game);

   AppFacade.Instance.AddManager<ResourceManager>(ManagerName.Resource);

解决方案:

将初始化SceneManager提到 GameManager 初始化之前就可以

如:

AppFacade.Instance.AddManager<ResourceManager>(ManagerName.Resource);

AppFacade.Instance.AddManager<GameManager>(ManagerName.Game);

当然 再提前也是可以的 只要是GameManager之前就可以


(以下是猜测的原因  注意 是猜测  懒得细查了。。。)

原因就是在添加GameManager的时候

GameManager中Awake方法中进行了初始化 我报错的地方就是这里 跟踪的话可以发现

   void OnInitialize() {
            LuaManager.InitStart();
            LuaManager.DoFile("Logic/Game");         //加载游戏
            LuaManager.DoFile("Logic/Network");      //加载网络
            //NetManager.OnInit();                     //初始化网络
            Util.CallMethod("Game", "OnInitOK");     //初始化完成

}

 这里有个  Util.CallMethod  函数 之后懒得跟踪

这里我猜测应该在 初始化GameManager之后访问了其他管理器的函数(变量的话代码中有取空赋值的操作 应该不是) //说明一下 这只是猜测。。。没有仔细进行排查。。。。

此时SceneManager还没有加载  因此报错 

找了半天 原来是这样的错误。。。。有点浪费时间。。。不过最后还是找到了。。。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值