前提・実現したいこと
初心者の為、見当違いな質問でしたら申し訳ありません。
よろしくおねがいします。
コードでも、実装の考え方でも、他の方法でもなんでも、アドバイスをお願いします。
複数の変数(例えばint 2桁、4種)を利用しての、Spriteのフェードイン、フェードアウトがしたい。
spriteの表示は確認しました。
発生している問題・エラーメッセージ
int変数を使ってGameObjectを指定できない。 また、itweenが働かない。
該当のソースコード(質問により追記1
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Change : MonoBehaviour 6{ 7 public static int[] type = new int[3]; 8 9 public static GameObject s_open,s_now; 10 11 public static GameObject p00000000;//~04112200等、大量に。 12 public static SpriteRenderer i00000000;//~04112200等、大量に。 13 14 void start() 15 { 16 p00000000 = GameObject.Find("_00000000"); 17 i00000000 = p00000000.GetComponent<SpriteRenderer>(); 18 //これがそれぞれの変数の分だけ、大量にある。 19 } 20 21 public static void AAA() 22 { 23 s_open = type[0] + type[1] + type[2] + type[3]; 24 //こういう風に変数を連結してGameObject名を指定したかった。 25 } 26 27 public static void BBB() 28 { 29 s_now = type[0] + type[1] + type[2] + type[3]; 30 } 31 32 public void ChangeSprite() 33 { 34 iTween.ValueTo(s_now, iTween.Hash("from", 1f, "to", 0f, "time", 0.5f, "onupdate", "SetValue")); 35 //現在のスプライトをフェードアウトさせて、 36 iTween.ValueTo(s_open, iTween.Hash("from", 0f, "to", 1f, "time", 0.5f, "onupdate", "SetValue")); 37 //新しいスプライトをフェードインさせたい。 38 } 39 40 public void CCC() 41 //こういう使い方をしたい。 42 { 43 BBB(); 44 type[2] = 00; 45 AAA(); 46 ChangeSprite(); 47 } 48 49 void SetValue(float alpha) 50 { 51 gameObject.GetComponent<UnityEngine.UI.Image>().color = new Color(0,0,0, alpha); 52 } 53}
現状はs_openとs_nowにただの数字が入っています(文字列連結ですらなく、type[0]からtype[3]の足し算になっています)。
「変数を使って変数を指定する」方法が必要です。例えば以下を参照してください。
https://teratail.com/questions/36198
(なおtypeの中身が1桁の時を考慮して0埋めも必要かと思います。「type[0].ToString("00")」とすると出来ます)
iTweenの方はSetValue関数(最後の引数で指定している関数)が必要です。
質問のコード内には存在していませんが、実装されていますか?
返信ありがとうございます。
すみません。コードの方は実装しているもでなく、実現したいものはこんなもの、というものでした。ToStringも試しましたが、当然、ただの文字列で。。。どうしようと悩んだあげくに相談させていただきました。
0埋めの発想はありませんでした。ありがとうございます。(00と代入したなら二桁の00だと思っていました。intなので一桁の0になるのですね)
リンクを拝見させていただきました。事前に検索をかけたつもりが甘かったようです。ありがとうございます。
考え方的には、
1、4種のintから1種のstringへ変換(0埋めも行う)
2、s_nowやs_openに上記のstringを使ってGameObjectを代入
という形でしょうか。
iTweenの方、追記しました。
実装のため、int[0]から[3]まで、すべてifやらswitchやらで分岐させることを検討中でした。。。本当にありがとうございます。
アドバイスを参考に記述してみます。
GameObjectの方の考え方はそれでいいと思います。
iTweenの方はこのコードだと「このスクリプトが付いたGameObjectに付いたImageの透明度を変更する」という意味になります。対象はs_nowとs_openだと思う(し、もしかしたらImageではなくSpriteRendererかもしれない)ので適宜変更してください。
あなたの回答
tips
プレビュー