Exemple #1
0
        virtual public void SetAvatar(string prefabFile)
        {
            if (this.prefabFile == prefabFile)
            {
                return;
            }
            this.prefabFile = prefabFile;


            GameObject prefab = WarRes.GetPrefab(prefabFile);

            if (avatar == null)
            {
                if (prefab == null)
                {
                    Debug.Log(string.Format("<color=red>单位资源没找到 prefabFile={0}</color>", prefabFile));
                }
                GameObject go = GameObject.Instantiate(prefab);
                go.name = "avatar";
                go.transform.SetParent(avatarContainer);
                go.transform.localPosition = unitData.unitType == UnitType.Solider ? new Vector3(0, 0, 0.5f) : Vector3.zero;
                avatar             = go.GetComponent <Avatara>();
                avatarInfo         = go.GetComponent <AvatarInfo>();
                avatarSpriteRender = go.GetComponent <SpriteRenderer> ();
                defaultMaterial    = avatarSpriteRender.material;
            }
            else
            {
//                Debug.Log("prefabFile=" + prefabFile + " , prefab=" + prefab);
                SpriteAvatar spriteAvatar       = (SpriteAvatar)avatar;
                SpriteAvatar prefabSpriteAvatar = prefab.GetComponent <SpriteAvatar>();
                if (prefabSpriteAvatar != null)
                {
                    spriteAvatar.avatarData = prefabSpriteAvatar.avatarData;
                    avatar.gameObject.transform.localScale = prefab.transform.localScale;
                }
                else
                {
                    Debug.LogFormat("<color=red>prefabFile={0} 有问题</color>", prefabFile);
                }

                if (avatarInfo != null)
                {
                    AvatarInfo spriteAvatarInfo = prefab.GetComponent <AvatarInfo>();
                    avatarInfo.CopyInfo(spriteAvatarInfo);
                }
            }

            avatar.angle  = angel;
            avatar.action = action;
            avatar.speed  = speed;

            if (materialType != WarMaterialsType.stateDefault)
            {
                _materialType = materialType;
                avatarSpriteRender.material = War.materials.GetMaterial(materialType);
            }

            if (sChangeAvatar != null)
            {
                sChangeAvatar(this);
            }
        }