・これくらいは簡単に乗り越えられるだろとと思ってた
プログラミングに関しては見積もりが甘く、予想した時間を大幅に超過してしまう事がよくある。というか未だにである。お恥ずかしい。
今回もUnityの話題である。タイトルの通り、UnityでC#Scriptから表示させる画像を切り替えるというものである。どっかのパンチパーマの某絵書きのボブみたいに「ね、簡単でしょ?」と言わんばかりに、華麗なタイピングで乗り越えてやろうと思っていた。しかし、どうやっても、検索をしてトライしても上手くいかなかったのだ。クソが。
・長々ダラダラぐだぐだぐっちゃらぐっちゃら
仕組みとしては、格納してある配列のファイル名を基に、適切な画像を表示するというプログラムである。基本的には
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Linq; public Sprite imageA; void Start(){ DisplayImage = GameObject.Find("DisplayImage").GetComponent<Image> (); DisplayImage.sprite = imageA; }
でOKなのである。しかし、↓のソースコードを見て頂ければ分かるように、ファイル名をstring型で格納した為、「spriteはstring型じゃ指定出来ないじょーあばばばばー」(超訳)と言われて上手くいかないのである。で、ぐっちゃらぐっちゃら何だかんだとやった結果、以下のように落ち着いた。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Linq; public Sprite imageA,imageB,imageC; //本当はいっぱいある string[,] Data = {{"imageA","Data1","Data2"},{"imageB","Data3","Data4"},{"imageC","Data5","Data6"}}; void Start(){ DisplayImage = GameObject.Find("DisplayImage").GetComponent<Image> (); Sprite[] sprites = [imageA,imageB,imageC]; Sprite SP = System.Array.Find<Sprite>( sprites, (sprite) => sprite.name.Equals(Data[0,0])); DisplayImage.sprite = SP; }
お世話になった所 ありがとうございます
tsubakit1.hateblo.jp
本当はもっと入り組んでるし、やる事はもっとあって、山もたくさんあると思うけど、進むしかない。
オチを考えたけど思い浮かばなかった午後9時前
追記
ソースコードの間違いがあったので修正