実装したいこと
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
回答1件
あなたの回答
tips
プレビュー