私がやろうとしているのは、Start()
私のシーンのプレハブGameObject
の方法です。私はこのプレハブがどこにあるかの位置を文字列として取得したいのですが、これを行う。私はこれを使用していますどのようにUnityのプレハブファイルの場所を取得
例: 私は私のシーンで剣プレハブGameObject
を入れて、Start()
に私はこのGameObject
は私のプロジェクトである場合のファイルディレクトリを取得したいと思います。
私がやろうとしているのは、Start()
私のシーンのプレハブGameObject
の方法です。私はこのプレハブがどこにあるかの位置を文字列として取得したいのですが、これを行う。私はこれを使用していますどのようにUnityのプレハブファイルの場所を取得
例: 私は私のシーンで剣プレハブGameObject
を入れて、Start()
に私はこのGameObject
は私のプロジェクトである場合のファイルディレクトリを取得したいと思います。
はusing UnityEditor;
NOTEを含める:プレハブがパブリックにしている場合にのみ動作します。
次に、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);
}
私は実際に非常によく似たものがありましたが、これを動作させようとしていたのは、私がgameObjectをASsetDatabase.GetAssetPath(プレファブ)のプレハブとして設定しようとしていたPublic GameObject変数の代わりです。だから私はこれはあなたが公共の変数を持っている場合のみ動作すると思いますか? – JoeyL
@JoeyLだから、私の答えのコードは働いていますか? – Programmer
はい、私はそれを確認しました。パブリック変数の場合にのみ機能します。だから 'GameObject prefab = GameObject.Find(" PrebabTest "); 文字列prefabPath = AssetDatabase.GetAssetPath(prefab); **失敗**。 – Programmer
これはエディタでのみ行いますか? – Programmer
@Programmer私はこれを理解しようとしていましたが、私はエディタを拡張していませんでしたが、Monobehavior。私はvoid Start()を使用してこのPrefab GameObjectのファイルの場所を取得できると思った。 – JoeyL
私はあなたが質問に答えたとは思わない。エディタまたはモバイルとスタンドアローンのビルドからこれを実行しますか?私はエディタでそれを行う方法を示すことができます – Programmer