我想要做的是在我的场景Start()
预制GameObject
方法中,我希望得到这个预制件的位置作为字符串,但我无法弄清楚如何这样做。
我如何使用此示例:
我在我的场景中放置了一个Sword预制件GameObject
,并在Start()
上我想知道这个GameObject
在我的项目中的文件目录。
答案 0 :(得分:3)
加入using UnityEditor;
注意:这仅适用于预制件是公开的。
然后使用AssetDatabase.GetAssetPath
获取预制件的路径。
public GameObject prefab;
void Start(){
string prefabPath = AssetDatabase.GetAssetPath(prefab);
Debug.Log("Path: " + prefabPath);
}
修改强>:
我使用PrefabUtility.GetPrefabType
,PrefabUtility.GetPrefabObject
和PrefabUtility.GetPrefabParent
进行了一些实验。 PrefabUtility.GetPrefabParent
解决了这个问题。您不需要使用PrefabUtility.GetPrefabParent
制作预制公开。
void Start()
{
GameObject prefab = GameObject.Find("PrebabTest");
Object GameObject2 = PrefabUtility.GetPrefabParent(prefab);
string prefabPath = AssetDatabase.GetAssetPath(GameObject2);
Debug.Log("Path: " + prefabPath);
}
答案 1 :(得分:0)
从变换获取完整路径
public static string GetGameObjectPath(Transform transform)
{
string path = transform.name;
while (transform.parent != null)
{
transform = transform.parent;
path = transform.name + "/" + path;
}
return path;
}
答案 2 :(得分:0)
如果你想找到一个实例的预制变体,你应该使用
PrefabUtility.GetCorrespondingObjectFromSource(YourPrefabInstance)
如果你想找到一个实例的原始预制件,你应该使用
PrefabUtility.GetCorrespondingObjectFromOriginalSource(YourPrefabInstance)
它只能在编辑器模式下工作。