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

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

新規登録して質問してみよう
ただいま回答率
85.48%
UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

2回答

965閲覧

[Unity] 視点移動ボタンが反応しない

Yanagi_George48

総合スコア4

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2019/09/30 03:33

編集2019/10/07 04:55

Unityで脱出ゲームを作っています。
UIで視点移動のボタンを追加したのですが、ボタンが反応しません。
以下のスクリプトを入力したのですが、どうしたらturnLBtnが反応するようになるのでしょうか。

using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System; using System.Collections; public class GameSystem : MonoBehaviour { public GameObject mainCamera; public EventSystem eventsystem; public string standName; void Start () { standName = "centerN"; eventsystem = GameObject.Find("EventSystem").GetComponent<EventSystem>(); } void Update () { if(Input.GetMouseButtonUp(0)){ if(eventsystem.currentSelectedGameObject==null){ }else{ switch(eventsystem.currentSelectedGameObject.name){ case "turnLBtn": turnL(); break; } } } } public void turnL () { switch(standName){ case "centerN": GameObject.Find("mainCamera").transform.rotation = Quaternion.Euler(0, 270, 0); GameObject.Find("mainCamera").transform.position = new Vector3(-1,7, -20); standName = "centerW"; break; case "centerW": GameObject.Find("mainCamera").transform.rotation = Quaternion.Euler(0, 180, 0); GameObject.Find("mainCamera").transform.position = new Vector3(-1, 7, -20); standName = "centerS"; break; case "centerS": GameObject.Find("mainCamera").transform.rotation = Quaternion.Euler(0, 90, 0); GameObject.Find("mainCamera").transform.position = new Vector3(-5, 7, -20); standName = "centerE"; break; case "centerE": GameObject.Find("mainCamera").transform.rotation = Quaternion.Euler(0, 0, 0); GameObject.Find("mainCamera").transform.position = new Vector3(-6, 7, -26); standName = "centerN"; break; } } }

https://senkouemaki.com/lab/
このサイトを参考にして制作しています。

よろしくお願いします。

<補足>
再生ボタンを押しても、エラーは出ないのですが、UIとして設定したボタンが反応しません。

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

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

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

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

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

guest

回答2

0

あなたのコードに、ログを出力するコードを追記しました
下記コードのように、「Debug.Log()」を使って
あなたのソースコードがどこまで正しく動いているか試してみてください
※「//2828」でコメントしてる部分が、追記した部分です。

C#

1 void Update() 2 { 3 if (Input.GetMouseButtonUp(0)) 4 { 5 if (eventsystem.currentSelectedGameObject == null) 6 { 7 8 } 9 else 10 { 11 Debug.Log("00:この処理は動いてる! ");//2828 12 Debug.Log("押下オブジェクト名:"+ eventsystem.currentSelectedGameObject.name);//2828 13 switch (eventsystem.currentSelectedGameObject.name) 14 { 15 case "turnLBtn": 16 turnL(); 17 break; 18 } 19 } 20 } 21 } 22 23 public void turnL() 24 { 25 Debug.Log("01:この処理は動いてる! ");//2828 26 Debug.Log("スタンド名:"+ standName);//2828 27 switch (standName) 28 { 29 case "centerN": 30 GameObject.Find("mainCamera").transform.rotation = Quaternion.Euler(0, 270, 0); 31 GameObject.Find("mainCamera").transform.position = new Vector3(-1, 7, -20); 32 standName = "centerW"; 33 break; 34 case "centerW": 35 GameObject.Find("mainCamera").transform.rotation = Quaternion.Euler(0, 180, 0); 36 GameObject.Find("mainCamera").transform.position = new Vector3(-1, 7, -20); 37 standName = "centerS"; 38 break; 39 case "centerS": 40 GameObject.Find("mainCamera").transform.rotation = Quaternion.Euler(0, 90, 0); 41 GameObject.Find("mainCamera").transform.position = new Vector3(-5, 7, -20); 42 standName = "centerE"; 43 break; 44 case "centerE": 45 GameObject.Find("mainCamera").transform.rotation = Quaternion.Euler(0, 0, 0); 46 GameObject.Find("mainCamera").transform.position = new Vector3(-6, 7, -26); 47 standName = "centerN"; 48 break; 49 } 50 } 51

Logを確認して
1.「00:この処理は動いてる!」が出ない
→このスプリクトファイルをオブジェクトに設定してるか確認
2.「01:この処理は動いてる!」が出ない
→Log上に「押下オブジェクト名:」で出てきた名前が「turnLBtn」かどうか確認
3.「00:この処理は動いてる!」「01:この処理は動いてる!」どっちも出てる
→Log上に「スタンド名:」で出てきた名前が「centerN」等の、想定した名前かどうか確認

これで原因と対応ができると思います!
動かなかったらどこまで動いているのかLogで見る!
という行為は結構有効なので詰まったら試してみてください。

投稿2019/09/30 09:21

Youbun

総合スコア125

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

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

0

お世辞にも良いコードでは無いのですが一応そのままで動くコードではあります。

・オブジェクトの名前が正しいか
・このスクリプトが何かのオブジェクトにアタッチされているか

この辺り見直してください。
特にカメラは初期名の**「Main Camera」「mainCamera」**に変える必要があるのでミスり易いかと思います。

投稿2019/09/30 08:35

編集2019/09/30 08:40
Hawn

総合スコア1222

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問