Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8901

【Unity】UIで押させたいボタンだけフォーカスさせる

$
0
0

背景

デジゲー博に展示して試遊してる様子を見て気づいたんですが、押させたい場所にポップを表示させるだけでは人は押してくれませんでした(見ててまじかよと思った)。

そこで、押させたい場所しか押せない仕組みが必須と分かり実装してみました。

概要

コードとか

StopperController.cs
usingUnityEngine;publicclassStopperController:MonoBehaviour{[SerializeField]privateCanvas_stopperCanvas;publicstaticStopperControllerInstance;privatevoidAwake(){Instance=this;}publicvoidFocus(GameObjectgo){_stopperCanvas.gameObject.SetActive(true);varcanvas=go.AddComponent<Canvas>();// ここtrueにしてからでないとsortingOrderの値を変更できない!canvas.overrideSorting=true;canvas.sortingOrder=_stopperCanvas.sortingOrder+1;canvas.renderMode=RenderMode.ScreenSpaceOverlay;}publicvoidRemoveFocus(GameObjectgo){varcanvas=go.GetComponent<Canvas>();if(canvas!=null){Object.Destroy(canvas);}_stopperCanvas.gameObject.SetActive(false);}#if UNITY_EDITOR
// 動作テスト用のコードは#if UNITY_EDITORで囲ってビルドに含まれないようにするのをよくやります[SerializeField]privateGameObjecttestGameObject;[ContextMenu("TestFocus")]voidTestFocus(){Focus(testGameObject);}[ContextMenu("TestRemoveFocus")]voidTestRemoveFocus(){RemoveFocus(testGameObject);}#endif
}

StopperCanvas

image.png

StopperController

image.png

参考になった場合はよろしければいいねお願いします😊

おわり


Viewing all articles
Browse latest Browse all 8901

Trending Articles