「Unity + Oculus Rift – Canvasに写真を表示する。-」
「Unity + Oculus Rift – 動いてみる。-」
「Unity + Oculus Rift – 上下にも動いてみる。-」
と続いてきて、やっとスライドショーっぽくなってきた。
現段階で以下のような状況を実現している。
Resources内に置いた10個のSpriteをCanvas/Imageに貼る。
Canvasは3D空間の部屋の中の壁近くにある。
Touchのサムスティックとボタンで部屋の中を自由に移動できる。
Touchのボタンで表示する画像を順に変更することができる。
ライトや部屋の壁などの付属品を除けば、あるのはCanvas/ImageとOVRCameraRigの2つ。
あとはSpriteが10個だ。
参考にさせていただいたのは以下のサイト。
https://qiita.com/nkjzm/items/72ff0406e02c1cc7075c
https://qiita.com/lycoris102/items/98bc5a5659e4889dd43f
https://teratail.com/questions/165896
一番上のサイトのDebugMover.csがメインで、ボタンのAとBに画像の変更を組み込んだ。
他にもいろいろ探し回って苦労して書いたが、スクリプトの主要な部分だけ載せておく。
1 2 3 4 5 6 7 8 9 10 11 12 |
public GameObject sObject; private Sprite sprite; public int PhotoNum = 0; Sprite[] image; void Start() { sObject = GameObject.Find("Canvas/Image"); image = Resources.LoadAll<Sprite>(""); sprite = image[PhotoNum]; sObject.GetComponent<Image>().sprite = sprite; } |
スクリプトはOVRCameraRigにアタッチしてあり、そこからCanvas/Imageを呼ぶというか、画像の貼り付け先の指定方法に手間取った。
1 2 3 |
public GameObject sObject; sObject = GameObject.Find("Canvas/Image"); |
Resources内のSpriteをすべて取得して配列に入れておく部分も結構いろいろなサイトを参考にさせていただいた。
Start()内でAssets¥Resources内のすべてのSpliteを配列に準備し、1枚目を上で取得したCanvas/Imageに貼るコードが下だ。
1 2 3 4 5 6 7 |
private Sprite sprite; Public int PhotoNum = 0; Sprite[] image; image = Resources.LoadAll<Sprite>(""); sprite = image[PhotoNum]; sObject.GetComponent<Image>().sprite = sprite; |
最終的にTouchのボタンで表示画像を変更する部分は配列の値を増減させて行うのだが、その減の方だけ下に載せる。
配列のカウンターを1つ下げて画像を貼り、そのサイズを設定する。
1 2 3 4 5 6 7 8 9 |
if (OVRInput.GetDown(OVRInput.Button.One)) { PhotoNum--; if(PhotoNum<0) PhotoNum = 0; sprite = image [PhotoNum]; sObject.GetComponent<Image>().sprite = sprite; Image imageSize = sObject.GetComponent<Image>(); imageSize.SetNativeSize(); } |
出来てしまえば、そうなのねって感じだが、UnityもC#も初心者という2重苦はなかなか楽しめる。
できれば、Sprite化してないHDD上の任意のフォルダ内の素の画像をSlide Showの対象としたい。
あと、縦長画像が右に寄るのも直したい。
Pivotの設定を0.5, 0.5にすれば中央に表示されるようになった。
自分でいじったのか初期値なのか、0,0になっていた。
「Unity + Oculus Rift – HDD上の指定フォルダにあるJPG画像を表示。-」へ続く。
Tweet