質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

927閲覧

変数からSpriteを切り替えたい

fbx2g

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/12/16 11:55

編集2020/12/18 05:10

前提・実現したいこと

初心者の為、見当違いな質問でしたら申し訳ありません。
よろしくおねがいします。
コードでも、実装の考え方でも、他の方法でもなんでも、アドバイスをお願いします。

複数の変数(例えば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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2020/12/18 01:12

現状はs_openとs_nowにただの数字が入っています(文字列連結ですらなく、type[0]からtype[3]の足し算になっています)。 「変数を使って変数を指定する」方法が必要です。例えば以下を参照してください。 https://teratail.com/questions/36198 (なおtypeの中身が1桁の時を考慮して0埋めも必要かと思います。「type[0].ToString("00")」とすると出来ます) iTweenの方はSetValue関数(最後の引数で指定している関数)が必要です。 質問のコード内には存在していませんが、実装されていますか?
fbx2g

2020/12/18 05:16

返信ありがとうございます。 すみません。コードの方は実装しているもでなく、実現したいものはこんなもの、というものでした。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やらで分岐させることを検討中でした。。。本当にありがとうございます。 アドバイスを参考に記述してみます。
sakura_hana

2020/12/18 07:22

GameObjectの方の考え方はそれでいいと思います。 iTweenの方はこのコードだと「このスクリプトが付いたGameObjectに付いたImageの透明度を変更する」という意味になります。対象はs_nowとs_openだと思う(し、もしかしたらImageではなくSpriteRendererかもしれない)ので適宜変更してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問