前提・実現したいこと
UNITYで「オブジェクトにアタッチしたスクリプト」から
「そのオブジェクト内のリストにアタッチしたPrefubのコンポーネント内のデータ」にアクセスしたいのですが、
どうにもうまくいきません…。
かなり基本的な質問で申し訳ありませんが、ご教授いただければ幸いです。
発生している問題・エラーメッセージ
Assets\Scripts\Test.cs(16,34): error CS1061: 'object' does not contain a definition for 'spriteData' and no accessible extension method 'spriteData' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
該当のソースコード
TestObjectの内容
オブジェクトは「TestObject」及び、プレハブ化している「TestPrefub」です。
スクリプトは「Test.cs」及び「TestData.cs」です。
「TestObject」にコンポーネント「Test.cs」を持たせています。
「Test.cs」のコードは次のとおりです。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Test : MonoBehaviour 6{ 7 public GameObject[] _TestPrefabs = new GameObject[1]; 8 private Sprite testSprite; 9 private object testPrefub0; 10 11 void Start() 12 { 13 testPrefub0 = _TestPrefabs[0].GetComponent<TestData>(); 14 testSprite = testPrefub0.spriteData; 15 } 16}
これによりInspectorに生成されたサイズ1のリストに「TestPrefub」をアタッチしています。↓
※TestPrefubはScene内にはなく、Projectウインドウから直接アタッチしています。
######Test Prefubの内容
「TestPrefub」にコンポーネント「TestData.cs」を持たせています。
「TestData.cs」のコードは次のとおりです。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class TestData : MonoBehaviour 6{ 7 [SerializeField] public Sprite spriteData; 8}
これによりInspectorに生成されたスプライト領域に画像(TestSprite.png)をアタッチしています。↓
試したこと
testSprite = testPrefub0.spriteData;
が無ければエラーが消えるので、
「TestPrefub」内の「TestData」をコンポーネントとして取得することには成功しています。
しかし、その「TestData」の中にある「SpriteData」を参照するコードが
testSprite = testPrefub0.spriteData;
ではダメ、という事のようです。
変数の型を変更しても正常に機能せず、どのように参照すればわかりません…。
補足情報(FW/ツールのバージョンなど)
Unity 2020.3.14f1(LTS)
回答1件
あなたの回答
tips
プレビュー