「Unity/UIクリック」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→UIにクリックイベントを追加(その1)) |
|||
| (同じ利用者による、間の7版が非表示) | |||
| 行1: | 行1: | ||
| − | UIにクリックイベントを追加 | + | |
| + | ==UIにクリックイベントを追加(その1)== | ||
| + | 以下のクラスをClickableContent.csで作り、クリックさせたい、UI部品に予めGUIでAddComponentしておく。 | ||
| + | <pre> | ||
| + | using UnityEngine; | ||
| + | using UnityEngine.EventSystems; | ||
| + | |||
| + | public class ContentClickListener : MonoBehaviour, IPointerClickHandler | ||
| + | { | ||
| + | public void OnPointerClick(PointerEventData eventData) | ||
| + | { | ||
| + | Debug.Log("OnPointerClick!!"); | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | 参考:https://pafu-of-duck.hatenablog.com/entry/2018/08/18/224254 | ||
| + | |||
| + | ===インナークラス形式=== | ||
| + | ContentClickListenerはインナークラスでも動く。 | ||
| + | <pre> | ||
| + | using UnityEngine.EventSystems; | ||
| + | using System; | ||
| + | |||
| + | public class SettingScene : MonoBehaviour | ||
| + | { | ||
| + | public class ContentClickListener : MonoBehaviour, IPointerClickHandler | ||
| + | { | ||
| + | public void OnPointerClick(PointerEventData eventData) | ||
| + | { | ||
| + | Debug.Log("OnPointerClick!!"); | ||
| + | } | ||
| + | } | ||
| + | void Start() { | ||
| + | GameObject objText = GameObject.Find("/Canvas/Text"); | ||
| + | ContentClickListener listener = objText.AddComponent<ContentClickListener>(); | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | ==UIにクリックイベントを追加(その2)== | ||
<pre> | <pre> | ||
GameObject colorImage = GameObject.Find("ColorImage"); | GameObject colorImage = GameObject.Find("ColorImage"); | ||
| 行10: | 行49: | ||
trigger.triggers.Add(entry); | trigger.triggers.Add(entry); | ||
</pre> | </pre> | ||
| + | |||
| + | ただし、ScrollView内のオブジェクトに適用すると、Scrollが無効化されてしまうので、ScrollViewの中で使う場合は、その1を推奨 | ||
2022年8月9日 (火) 23:33時点における最新版
UIにクリックイベントを追加(その1)
以下のクラスをClickableContent.csで作り、クリックさせたい、UI部品に予めGUIでAddComponentしておく。
using UnityEngine;
using UnityEngine.EventSystems;
public class ContentClickListener : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("OnPointerClick!!");
}
}
参考:https://pafu-of-duck.hatenablog.com/entry/2018/08/18/224254
インナークラス形式
ContentClickListenerはインナークラスでも動く。
using UnityEngine.EventSystems;
using System;
public class SettingScene : MonoBehaviour
{
public class ContentClickListener : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("OnPointerClick!!");
}
}
void Start() {
GameObject objText = GameObject.Find("/Canvas/Text");
ContentClickListener listener = objText.AddComponent<ContentClickListener>();
}
}
UIにクリックイベントを追加(その2)
GameObject colorImage = GameObject.Find("ColorImage");
EventTrigger trigger = colorImage.AddComponent<EventTrigger>();
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerClick;
entry.callback.AddListener(delegate {
SetColor(colorName);
});
trigger.triggers.Add(entry);
ただし、ScrollView内のオブジェクトに適用すると、Scrollが無効化されてしまうので、ScrollViewの中で使う場合は、その1を推奨
