c# - 获取 Unity 中的预制件文件位置

标签 c# unity-game-engine

我想要做的是在场景中预制件 GameObjectStart() 方法中,我想获取该预制件所在的位置一个字符串,但我不知道如何做到这一点。

我如何使用它的示例: 我在场景中放置了一个 Sword Prefab GameObject ,在 Start() 上,我想获取此 GameObject 在我的场景中的文件目录。项目。

最佳答案

包括使用UnityEditor;

注意:只有当预制件公开时,这才有效。

然后使用AssetDatabase.GetAssetPath获取预制件的路径。

public GameObject prefab;
void Start(){
    string prefabPath = AssetDatabase.GetAssetPath(prefab);
    Debug.Log("Path: " + prefabPath);
}

编辑:

我用 PrefabUtility.GetPrefabTypePrefabUtility.GetPrefabObjectPrefabUtility.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);
}

关于c# - 获取 Unity 中的预制件文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850296/

相关文章:

android - 应用内计费 v3 unity onActivityResult

c# - 如何从触摸板获取鼠标滚动?

c# - .Distinct() 调用不过滤

c# - 使用 DataContractJsonSerializer,将 JSON 字符串反序列化为具有列表和接口(interface)作为属性的 C# 对象

c# - EF6 中的急切、延迟和显式加载

unity-game-engine - 该水着色器的哪些部分负责透明度?

c# - 无法将类型 'System.Linq.IQueryable<double?>' 转换为 'float'

c# - 是否可以在 C# 类库中创建 Windows 窗体?

android - Unity3D 无法列出目标平台错误

python - 通过 Http 将视频文件从 Unity 上传到 Python