public static void ChangeSkin(uint playerID, int skinIndex, CharacterEntity characterEntity) { if (characterEntity != null) { PlayerData playerData = PlayerData.GetPlayerData(playerID); AvatarData avatarData = AvatarData.GetAvatarData(playerData.avatarID); string skinPath = avatarData.GetSkinPathByIndex(skinIndex); string wpPath = avatarData.GetWPPathByIndex(skinIndex); Texture skinTexture = ResMgr.instance.Load <Texture>(skinPath); Texture wpTexture = ResMgr.instance.Load <Texture>(wpPath); if (!skinTexture || !wpTexture) { return; } Renderer[] renderers = characterEntity.gameObject.GetComponentsInChildren <Renderer>(); Renderer renderer = null; int rendererLength = renderers.Length; 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(SKIN_NODE_NAME)) { material.mainTexture = skinTexture; string skinInfoPath = skinPath + "_info"; Texture skinInfoTexture = ResMgr.instance.Load <Texture>(skinInfoPath); if (skinInfoTexture) { material.SetTexture("_InfoTex", skinInfoTexture); } } if (material.name.Contains(WP_NODE_NAME)) { material.mainTexture = wpTexture; } } } } }