저는 프리 팹을 동적으로 생성하고 자식 GameObject에 많은 속성을 설정하려고합니다. 이러한 속성 중 하나는 텍스처이고 텍스처는 프리 패브의 자식으로 표시되지만 (GameObject 및 Mesh와 같은 방식으로) GameObject의 MeshRenderer는 여전히 재질을 표시하지 않으며 전체 메쉬가 분홍색으로 표시됩니다. 여기 내 코드는 다음과 같습니다.CreateEmptyPrefab가 meshRenderer에 텍스처를 유지하지 않습니다.
Texture2D sharedTexture = (Texture2D)Resources.Load ("mainTexture", typeof(Texture2D));
string prefabPath = basepath + filename + ".prefab";
UnityEngine.Object prefab = PrefabUtility.CreateEmptyPrefab (prefabPath);
GameObject root = new GameObject ("Zone_" + filename);
GameObject temp = new GameObject(filename);
Texture2D texCopy = (Texture2D)UnityEngine.Object.Instantiate (sharedTexture);
MeshFilter meshFilter = (MeshFilter)temp.AddComponent<MeshFilter>();
MeshRenderer meshRenderer = temp.AddComponent<MeshRenderer>();
MeshCollider meshCollider = (MeshCollider)temp.AddComponent<MeshCollider>();
temp.AddComponent<Zone>();
Mesh mesh = buildMeshForFilename (filename);
mesh.name = "Zone_Mesh";
meshFilter.mesh = mesh;
meshCollider.sharedMesh = mesh;
meshRenderer.material.mainTexture = texCopy;
temp.transform.parent = root.transform;
AssetDatabase.AddObjectToAsset(mesh, prefabPath);
AssetDatabase.AddObjectToAsset (texCopy, prefabPath);
PrefabUtility.ReplacePrefab(root, prefab, ReplacePrefabOptions.ConnectToPrefab);
AssetDatabase.SaveAssets();
GameObject.Destroy (root);
텍스처를 메시에 표시하려면 어떻게해야합니까?
개체가 분홍색으로 표시되면 더 자주 쉐이더 문제가됩니다. 프리 패브로 지정된 셰이더와 인스턴스화 된 셰이더가 맞는지 확인하십시오. – Dover8