質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2767閲覧

AssetDatabase.LoadAssetAtPathを使った参照について

NOOBPROGRAM

総合スコア1

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/05/22 02:21

編集2020/05/22 02:30

実装したいこと
AssetDatabase.LoadAssetAtPathを使って参照したExplanationを任意のTEXT(今回はChangeTXT(↓画像)のTEXT内)に入れたいのですがうまく参照できない
イメージ説明

実際にやっている処理
まず、Item.CSで[CreateAsset!Menu(fileName = "Items", menuName = "Items/items")]を使い、画像のようにして アイテムのデータベースを作れるようにしました。
![イメージ説明]

そしてこの方法を用いて作成したデータベースの内容が次の画像のようなデータです
イメージ説明
この画像右のデータベース上のExplanationを参照したいと思い、ExplanationTXT.CSで次のような処理を書きました
※コメント参照

しかしMyItem = AssetDatabase.LoadAssetAtPath<Item>("Assets/UIs/Items/Explanation"); というところで上手く受け取れないのか、ChangeTXTのTEXT内容が変わらないです

原因として考えているモノ
MyItem = AssetDatabase.LoadAssetAtPath<Item>("Assets/UIs/Items/Explanation");の("Assets/UIs/Items/Explanation");というところで指定しているパスが間違えている
調べながらやっているもので、この指定の仕方が間違っているのかなと思います。

これに対しての正しい記述法または、これ以外が原因になるのであれば指摘していただきたいです。

ITEM CS

using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "Items", menuName = "Items/items")] public class Item : ScriptableObject { [SerializeField] private string itemName; [SerializeField] private Sprite itemImage; [SerializeField] private string explanation; private EditButton.Symbol EditSymbol; public string MyItemName { get => itemName; }//読みとるだけ public Sprite MyItemImage { get => itemImage; } public string MyExplanation { get => explanation; }  }

ExplanationTXT CS

using

1using UnityEditor; 2#if UNITY_EDITOR 3using UnityEngine; 4using UnityEngine.UI; 5public class ExplanationTXT 6{ 7 private Item item; 8 public Item MyItem { get => item; private set => item = value; }  //アイテムの要素 9 private string stringTxt;  //空のTxtを用意 (後でExplanationの内容を入れる 10 private Text uiTxt;     //”ChangeTXT”の<Text> 11 public void SetExplanation (Text etext) 12 { 13 MyItem = AssetDatabase.LoadAssetAtPath<Item>("Assets/UIs/Items/Explanation"); 14 stringTxt = MyItem.MyExplanation; 15 uiTxt = GameObject.Find("ChangeTXT").GetComponent<Text>(); 16 uiTxt.text = this.stringTxt;//ここでMyExplanationの内容を入れる 17 } 18} 19#endif 20

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2020/05/22 04:55

AssetDatabase.LoadAssetAtPathはエディタ拡張用で、ゲーム上では動きませんがその点把握済みですか? (ゲーム上でも利用したいならResources.LoadとかFile.IO系とかAssetBundle使用などが挙げられます)
NOOBPROGRAM

2020/05/22 06:13

そうなんですね もう少し調べてみます
guest

回答1

0

自己解決

この件に関して、そもそもの私の認識が間違っていたため、自分が参考にしたサイトを張って解決法にしたいと思います。リンク内容

投稿2020/05/22 06:56

NOOBPROGRAM

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問