今天增加了一个场景类 但是报错 虽然有很多种 但是还是记下来了
以前增加过 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还没有加载 因此报错
找了半天 原来是这样的错误。。。。有点浪费时间。。。不过最后还是找到了。。。