Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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());
        }
        //);
    }
Exemplo n.º 3
0
    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);
    }