public ObjMyPlayer CreateMainPlayer(InitMyPlayerData initData) { if (null != MyPlayer) { Logger.Error("mMainPlayer != null"); Object.Destroy(MyPlayer.gameObject); MyPlayer = null; } var objRes = ResourceManager.PrepareResourceSync <GameObject>(Resource.PrefabPath.MyPlayer); if (null == objRes) { Logger.Debug("ERROR: Resources.Load[{0}]", Resource.PrefabPath.MyPlayer); return(null); } var p = new Vector3(initData.X, initData.Y, initData.Z); if (initData.DirX == 0 && initData.DirZ == 0) { initData.DirX = 1.0f; } var q = Quaternion.LookRotation(new Vector3(initData.DirX, 0, initData.DirZ)); var obj = Object.Instantiate(objRes, p, q) as GameObject; var avatar = obj.GetComponent <ActorAvatar>(); #if UNITY_EDITOR obj.name = string.Format("[{0}]({1})_{2}", initData.Name, initData.DataId, initData.ObjId); #else obj.name = initData.ObjId.ToString(); #endif var character = obj.GetComponent <ObjCharacter>(); character.Init(initData); obj.SetActive(true); mObjDict.Add(initData.ObjId, character); Logger.Debug("SUCCESS: Create Character[{0}]", character.GetObjId()); MyPlayer = obj.GetComponent <ObjMyPlayer>(); var e1 = new Character_Create_Event(initData.ObjId); EventDispatcher.Instance.DispatchEvent(e1); MyPlayer.TitleList = PlayerDataManager.Instance.TitleList; return(MyPlayer); }
private void CreateObjAsync <T>(InitBaseData initData, string prefabPath, GameObject root = null, Action <T> callBack = null) where T : ObjBase { if (mObjDict.ContainsKey(initData.ObjId)) { Logger.Warn("mObjPool.ContainsKey[{0}]", initData.ObjId.ToString()); RemoveObj(initData.ObjId); } //ResourceManager.PrepareResource<GameObject>(prefabPath, prefab => { var pos = new Vector3(initData.X, initData.Y, initData.Z); var go = ComplexObjectPool.NewObjectSync(prefabPath); var goTransform = go.transform; goTransform.localPosition = pos; goTransform.localRotation = Quaternion.identity; if (null != root) { goTransform.parent = root.transform; } #if UNITY_EDITOR go.name = string.Format("[{0}]({1})_{2}", initData.Name, initData.DataId, initData.ObjId); #endif go.SetActive(true); var obj = go.GetComponent <T>(); try { obj.Init(initData, () => { if (null != callBack) { callBack(obj); } }); } catch (Exception e) { Logger.Error("Create obj[{0}] failed! error:[{1}]", initData.ObjId, e.ToString()); #if !UNITY_EDITOR ComplexObjectPool.Release(go); #endif } if (initData.UseFakeModel) { mFakeList.Add(initData.ObjId); } mObjDict.Add(initData.ObjId, obj); if (!IsInit) { Table.ForeachWarFlag((tb) => { WarFlagDictionary.Add(tb.Id, tb.FlagModel); return(true); }); IsInit = true; } if (WarFlagDictionary.ContainsValue(initData.DataId)) { EventDispatcher.Instance.DispatchEvent(new UpdateWarFlagModelEvent(initData.ObjId, 0, initData.DataId)); } else if (GameUtils.GetNpcLodeID(initData.DataId) > 0) { EventDispatcher.Instance.DispatchEvent(new UpdateWarFlagModelEvent(initData.ObjId, 1, initData.DataId)); } else { var e1 = new Character_Create_Event(initData.ObjId); EventDispatcher.Instance.DispatchEvent(e1); } //Logger.Info("CreateObjAsync Obj[{0}]", initData.ObjId.ToString()); } //); }
public ObjMyPlayer CreateMainPlayer(InitMyPlayerData initData) { if (null == MyPlayer) { var objRes = ResourceManager.PrepareResourceSync <GameObject>(Resource.PrefabPath.MyPlayer); if (null == objRes) { Logger.Debug("ERROR: Resources.Load[{0}]", Resource.PrefabPath.MyPlayer); return(null); } var p = new Vector3(initData.X, initData.Y, initData.Z); if (initData.DirX == 0 && initData.DirZ == 0) { initData.DirX = 1.0f; } var q = Quaternion.LookRotation(new Vector3(initData.DirX, 0, initData.DirZ)); var obj = Object.Instantiate(objRes, p, q) as GameObject; #if UNITY_EDITOR obj.name = string.Format("[{0}]({1})_{2}", initData.Name, initData.DataId, initData.ObjId); #else obj.name = initData.ObjId.ToString(); #endif MyPlayer = obj.GetComponent <ObjMyPlayer>(); MyPlayer.InitImpl(initData, true); obj.SetActive(true); mObjDict.Add(initData.ObjId, MyPlayer); Logger.Debug("SUCCESS: Create Character[{0}]", MyPlayer.GetObjId()); Object.DontDestroyOnLoad(obj); } else { var p = new Vector3(initData.X, initData.Y, initData.Z); if (initData.DirX == 0 && initData.DirZ == 0) { initData.DirX = 1.0f; } var q = Quaternion.LookRotation(new Vector3(initData.DirX, 0, initData.DirZ)); MyPlayer.transform.position = p; MyPlayer.transform.rotation = q; try { MyPlayer.gameObject.SetActive(true); } catch (Exception e) { Logger.Error("CreateMainPlayer MyPlayer.gameObject.SetActive(true); throw exception:" + e); } MyPlayer.InitImpl(initData, false); mObjDict.Add(initData.ObjId, MyPlayer); Logger.Debug("SUCCESS: Create Character[{0}]", MyPlayer.GetObjId()); } var e1 = new Character_Create_Event(initData.ObjId); EventDispatcher.Instance.DispatchEvent(e1); MyPlayer.TitleList = PlayerDataManager.Instance.TitleList; return(MyPlayer); }