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); } }