Unity – ¿Cómo cambiar el nombre de Mesh a través de un script?
– UnityAssets3Free
buenas , soy kein y aqui os traigo
nueva pregunta curiosa
Estoy trabajando en un script para cambiar el nombre de Mesh en Unity directamente porque cada vez que cambio el nombre de un archivo FBX, la malla asset Todavía conservo el nombre antiguo de la última vez que se exportó desde Maya desde 3dsMax, lo cual es realmente molesto. Lo que probé no funciona, código como:
public class Rename
[MenuItem("Assets/Test")]
private static void renameTest()
//select a fbx in project window
GameObject fbx = Selection.activeGameObject;
Mesh meshAsset = fbx.GetComponentInChildren<MeshFilter>().sharedMesh;
meshAsset.name = "new name";
Debug.Log(meshAsset);
También probé:
private static void renameTestv2()
GameObject fbx = Selection.activeGameObject;
Mesh meshAsset = fbx.GetComponentInChildren<MeshFilter>().sharedMesh;
Mesh meshAsset2 = Object.Instantiate(meshAsset);
meshAsset2.name = "new name";
fbx.GetComponentInChildren<MeshFilter>().sharedMesh = meshAsset2;
La tercera forma puede cambiar el nombre de Mesh en el componente Meshfilter de FBX, pero la subfunción real todavía usa la anterior, puede averiguar a qué me refiero con las imágenes adjuntas.
private static void renameTest()
GameObject fbx = Selection.activeGameObject;
string path = AssetDatabase.GetAssetPath(fbx);
Mesh meshAsset = AssetDatabase.LoadAllAssetRepresentationsAtPath(path)[0] as Mesh;
meshAsset.name = "new name";
fbx.GetComponentInChildren<MeshFilter>().sharedMesh = meshAsset;
Debug.Log(meshAsset);
¿Como puedó resolver esté problema?
Si vuelvo a exportar el FBX desde DCC para cambiar el nombre de Mesh, perderá el vínculo con el prefabricado, pero el GUID del archivo fbx en realidad no cambia, ¿por qué sucede esto? mis pasos son
- cambie el nombre del archivo aa.FBX en unity a bb.FBX
- Importe bb.FBX en 3dsmax y cambie el nombre de aa a bb en 3dsmax
- exportar a unity como bb.FBX otra vez.
2 respuestas 2
Creo que esto no se puede hacer directamente en Unity.
Razón: ¿Qué ves en Unity en assets es un modelo virtual ya importado prefabricado. De hecho, en el navegador de archivos del sistema, sigue siendo un archivo FBX normal y Unity no escribe cosas directamente en ese archivo FBX. Unity no es un software de modelado 3D, por lo que no se intenta abordar este problema.
En otras palabras de Paquete exportador FBX
Cuando Unity importa un modelo desde una aplicación de modelado 3D como Autodesk® Maya®, Unity crea un modelo prefabricadoel cual es un representación de solo lectura del contenido del archivo FBX. No puede editar Model Prefabs en Unity, aparte de cambiar la configuración de importación. Cuando el archivo FBX se modifica dentro del software de modelado 3D de origen, Unity actualiza el Model Prefab.
Debe consultar este paquete y sus características, que están específicamente diseñadas para archivos FBX de ida y vuelta entre Unity y Maya/3ds Max.
Consulte la función AssetDatabase RenameAsset.
DOCS: «Renombrar un asset Expediente.»
var path = AssetDatabase.GetAssetPath(fbx);
var newName = "new name";
AssetDatabase.RenameAsset(path, newName);
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
eso es todo,espero que te funcione