Example #1
0
    /// <summary>
    /// 创建净数据对象
    /// </summary>
    /// <param name="_id"></param>
    /// <returns></returns>
    public static CGPlayer CreateDummy(PlayerBaseInfo _info)
    {
        GameObject newGO = null;

        if (GameCenter.instance.dummyOpcPrefab != null)
        {
            newGO      = Instantiate(GameCenter.instance.dummyOpcPrefab) as GameObject;
            newGO.name = "Dummy CG Player [" + _info.ServerInstanceID + "]";
        }
        else
        {
            newGO = new GameObject("Dummy CG Player[" + _info.ServerInstanceID + "]");
        }
        newGO.tag = "Player";
        newGO.SetMaskLayer(LayerMask.NameToLayer("CGPlayer"));
        newGO.AddComponent <ActorMoveFSM>();
        CGPlayer newOPC = newGO.AddComponent <CGPlayer>();

        newOPC.isDummy_                = true;
        newOPC.id                      = _info.ServerInstanceID;
        newOPC.actorInfo               = _info;
        newOPC.typeID                  = ObjectType.CGObject;
        newOPC.curMoveSpeed            = newOPC.actorInfo.StaticSpeed * MOVE_SPEED_BASE;
        newOPC.CurRealSpeed            = newOPC.curMoveSpeed;
        newOPC.transform.localRotation = new Quaternion(0, _info.RotationY, 0, 0);
        GameCenter.curGameStage.PlaceGameObjectFromServer(newOPC, (int)_info.ServerPos.x, (int)_info.ServerPos.y, (int)newOPC.transform.localEulerAngles.y);
        GameCenter.curGameStage.AddObject(newOPC);
        return(newOPC);
    }
Example #2
0
    IEnumerator CreateAsync()
    {
        if (isDummy_ == false)
        {
            GameSys.LogError("You can only start create other player in dummy: " + actorInfo.ServerInstanceID);
            yield break;
        }
        //
        isDownloading_ = true;                          //判断是否正在下载,防止重复创建

        CGPlayer opc   = null;
        bool     faild = false;

        pendingDownload = Create(actorInfo, delegate(CGPlayer _opc, EResult _result)
        {
            if (_result != EResult.Success)
            {
                faild = true;
                return;
            }

            opc             = _opc;
            pendingDownload = null;
        });
        while (opc == null || opc.inited == false)
        {
            if (faild)
            {
                yield break;
            }
            yield return(null);
        }

        pendingDownload = null;
        isDownloading_  = false;

        if (!actorInfo.IsAlive)
        {
            opc.Dead();
        }
    }