Unity3Dはコードを使用して、EventTriggerイベントをコンポーネントにすばやく追加します
目次
(2)EventTriggerで対応するイベントを取得します
1.ブログ紹介
通常、クリック、ドラッグアンドドロップなどのイベントイベントを画像などのUIコンポーネントに追加する場合、編集バーのコンポーネントにEventTriggerを手動で追加してから、EventTriggerTypeを追加してから、トリガーメソッド(デモ1など)を追加する必要があります。 )、このブログでは、静的展開メソッドを使用して、さまざまなEventTriggerイベントをコンポーネントにすばやく追加します。(デモ2など)
2.コンテンツ
(1)EventTriggerを取得する
ターゲットオブジェクトのEventTriggerコンポーネントを取得し、そうでない場合は追加します
//添加EventTrigger组件
EventTrigger trigger = obj.GetComponent<EventTrigger>();
if (trigger == null)
{
trigger = obj.gameObject.AddComponent<EventTrigger>();
}
(2)EventTriggerで対応するイベントを取得します
EventTriggerのイベントリストを取得し、追加するイベントにコールバックメソッドcallbackを追加します。追加するイベントがEventTriggerのイベントリストにない場合は、追加します。
//获取事件列表
List<EventTrigger.Entry> entries = trigger.triggers;
if (entries==null)
{
entries = new List<EventTrigger.Entry>();
}
//获取对应事件
EventTrigger.Entry entry = new EventTrigger.Entry();
bool isExist = false;
for (int i = 0; i < entries.Count; i++)
{
if (entries[i].eventID == eventTriggerType)
{
entry = entries[i];
isExist = true;
}
}
entry.callback.AddListener(callback);
if (!isExist)
{
entry.eventID = eventTriggerType;
trigger.triggers.Add(entry);
}
(3)静的拡張
[Image.AddListener(type、method)]の効果を直接実現するには、静的拡張を行う必要があります。静的拡張についてあまり詳しくない学生は、静的拡張に関するブロガーの記事を読むことができます。非常に簡単です。見てください。最後にプッシュがあります。ここでは、コンポーネントの静的拡張を実行でき、簡単に実現できます。
/// <summary>
/// 为组件添加监听事件
/// </summary>
/// <param name="obj"></param>
/// <param name="eventTriggerType"></param>
/// <param name="callback"></param>
/// <returns></returns>
public static void AddListener(this Component obj,EventTriggerType eventTriggerType,UnityAction<BaseEventData> callback)
{
//添加EventTrigger组件
EventTrigger trigger = obj.GetComponent<EventTrigger>();
if (trigger == null)
{
trigger = obj.gameObject.AddComponent<EventTrigger>();
}
//获取事件列表
List<EventTrigger.Entry> entries = trigger.triggers;
if (entries==null)
{
entries = new List<EventTrigger.Entry>();
}
//获取对应事件
EventTrigger.Entry entry = new EventTrigger.Entry();
bool isExist = false;
for (int i = 0; i < entries.Count; i++)
{
if (entries[i].eventID == eventTriggerType)
{
entry = entries[i];
isExist = true;
}
}
entry.callback.AddListener(callback);
if (!isExist)
{
trigger.triggers.Add(entry);
}
}
(4)デモンストレーション効果
ここで、クリックイベントを画像にすばやく追加します。
3.プッシュ
この記事のソースコードは、静的拡張Githubプロジェクトに配置されています:https://github.com/KingSun5/StaticExtension
静的拡張ブログ:https://blog.csdn.net/Mr_Sun88/article/details/90106925
4.結論
とてもシンプルで便利です。ブロガーの記事が上手く書かれていると思うなら、ブロガーに注意を払い、ブログ投稿を気に入ってください。また、ブロガーの能力は限られています。記事に誤りがある場合は、どうぞコメントして批判します。
QQ交換グループ:806091680(中国人)
このグループは、CSDNブロガーのChinarによって作成されました。お勧めします。私もグループにいます!
この記事はオリジナル記事ですので、有名作家の出典を転載してトップにこだわってください!!!!