示例#1
0
 public static void ChangeFace(uint playerID, uint faceIndex, CharacterEntity characterEntity)
 {
     if (characterEntity != null)
     {
         PlayerData playerData  = PlayerData.GetPlayerData(playerID);
         AvatarData avatarData  = AvatarData.GetAvatarData(playerData.avatarID);
         string     facePath    = avatarData.GetFacePathByIndex(faceIndex);
         Texture    faceTexture = ResMgr.instance.Load <Texture>(facePath);
         if (!faceTexture)
         {
             return;
         }
         Renderer[] renderers      = characterEntity.gameObject.GetComponentsInChildren <Renderer>();
         Renderer   renderer       = null;
         int        rendererLength = renderers.Length;
         bool       alreadyFind    = false;
         for (int i = 0; i < rendererLength; i++)
         {
             renderer = renderers[i];
             //#if UNITY_EDITOR
             Material[] materials = renderer.materials;
             //#else
             //                        Material[] materials = renderer.sharedMaterials;
             //#endif
             Material material        = null;
             int      materialsLength = materials.Length;
             for (int materialIndex = 0; materialIndex < materialsLength; materialIndex++)
             {
                 material = materials[materialIndex];
                 if (material.name.Contains(FACE_NODE_NAME))
                 {
                     material.mainTexture = faceTexture;
                     alreadyFind          = true;
                     break;
                 }
             }
             if (alreadyFind)
             {
                 break;
             }
         }
     }
 }