Unity3Dはコードを使用して、EventTriggerイベントをコンポーネントにすばやく追加します

          Unity3Dはコードを使用して、EventTriggerイベントをコンポーネントにすばやく追加します


目次

1.ブログ紹介

2.コンテンツ

(1)EventTriggerを取得する

(2)EventTriggerで対応するイベントを取得します

(3)静的拡張

(4)デモンストレーション効果

3.プッシュ

4.結論


1.ブログ紹介

        通常、クリック、ドラッグアンドドロップなどのイベントイベントを画像などのUIコンポーネントに追加する場合、編集バーのコンポーネントにEventTriggerを手動で追加してから、EventTriggerTypeを追加してから、トリガーメソッド(デモ1など)を追加する必要があります。 )、このブログでは、静的展開メソッドを使用して、さまざまなEventTriggerイベントをコンポーネントにすばやく追加します。(デモ2など)

デモ1

 

デモ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によって作成されました。お勧めします。私もグループにいます!

       この記事はオリジナル記事ですので、有名作家の出典を転載してトップにこだわってください!

おすすめ

転載: blog.csdn.net/Mr_Sun88/article/details/93545160