PrefabでListを作成して表示するアプリを作っています。
Prefabを生成する際に画像も読み込んで表示するのですが
シュミレータでは問題なく表示されるのですがデバイスでテストすると
画像が縦半分、横半分くらいのサイズに表示されます。
Imageに入れるTexture2Dのサイズを250×140とスクリプトで固定させているのが
問題かもしれません。
生成するPrefab内にあるImageのサイズを取得してTexture2Dに参照させればいいのだと
思いますが参照方法が分かりません。
分かる方教えてください。
環境)
PC: Windows10
Unity2019.4.0f1
言語:C#
public class VideoListDisplay : MonoBehaviour { [SerializeField]GameObject ListPrefab = null; List<VideoList> _videoList; string FileNameNum; int QFlag; string FilePath; Image[] images; GameObject buttonObject0,buttonObject1,buttonObject2; void Start() { _videoList = new List<VideoList>(); _videoList = PlayerPrefsUtility.LoadList<VideoList>("videolist"); if(_videoList.Count != 0) { for(int i=0; i < _videoList.Count; i++) { var item = GameObject.Instantiate(ListPrefab) as GameObject; item.transform.SetParent(transform, false); //ListNo Setting item.GetComponentInChildren<OnClickList>().ListNo = i; //Number Display item.GetComponentInChildren<Text>().text = (i+1).ToString("D3"); //Image Display images = item.GetComponentsInChildren<Image>(); FileNameNum = _videoList[i].FileNameNum; FilePath = Application.persistentDataPath + "/" + FileNameNum + ".png"; Debug.Log("filepath" + i + "/" + FileNameNum); images[1].sprite = LoadSprite(FilePath); //Button Display QFlag = _videoList[i].QFlag; buttonObject0 = item.transform.GetChild(2).gameObject; buttonObject1 = item.transform.GetChild(3).gameObject; buttonObject2 = item.transform.GetChild(4).gameObject; switch(QFlag) { case 0: buttonObject0.SetActive(true); buttonObject1.SetActive(false); buttonObject2.SetActive(false); break; case 1: buttonObject0.SetActive(false); buttonObject1.SetActive(true); buttonObject2.SetActive(false); break; case 2: buttonObject0.SetActive(false); buttonObject1.SetActive(false); buttonObject2.SetActive(true); break; } } } } //thumbnail display Sprite LoadSprite(string path) { if(string.IsNullOrEmpty(path)) return null; if(System.IO.File.Exists(path)) { byte[] bytes = System.IO.File.ReadAllBytes(path); Texture2D texture = new Texture2D(250,140); texture.LoadImage(bytes); Sprite sprite = Sprite.Create(texture, new Rect(0,0,texture.width,texture.height), new Vector2(0.5f,0.5f)); return sprite; } return null; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。