【Unity4.6beta】何もないところでもEventSystemの通知を受け取る方法

前回のEventSystemの通知を受け取ってみたの方法だけではUI用のGameObjectでないと受け取れません。
そこでUIが何もないところにも強制的に通知を飛ばせないか試してみました。

今回のソースコードはコチラ。

using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections;
using System.Collections.Generic;

public class ForceRaycaster : BaseRaycaster
{
	public override Camera eventCamera
	{
		get
		{
			return null;
		}
	}

	public override void Raycast(PointerEventData eventData, List<RaycastResult> resultAppendList)
	{
		RaycastResult result = new RaycastResult();
		result.distance = 0.0f;
		result.go = gameObject;
		result.index = 0;
		result.module = this;

		resultAppendList.Add( result );
	}
}

こちらをイベント通知を受け取りたいGameObjectにアタッチし、同じGameObjectに前回のEventSystemTestもつけておきます。
SnapCrab_NoName_2014-9-2_7-22-5_No-00
あとはUIがあるところに重複して通知が来ないことを確認するためにImageなども適当に置いてから実行してみてください。

ちなみに、Colliderがあるところに通知を飛ばしたい場合は、すでにPhysicsRaycasterとPhysics2DRaycasterというコンポーネントが用意されています。
これらをCameraオブジェクトにつけるとそのカメラから各Colliderのあるオブジェクトにレイを飛ばしてヒットしたら通知、という感じですね。

Unityのアセット販売中!

Arbor 3

ステートマシンの状態遷移やパラメータはエディタで編集でき、
ゲームロジックに依存するステートの挙動はスクリプトで記述可能なエディタ拡張。

詳細はこちら

Nostalgia 2

RPGツクールVXやWOLF RPGエディターのオートタイルに準拠したエディタ拡張。

詳細はこちら

オススメ!


Privacy Preference Center

Your Privacy

This site uses cookies to display contents and advertisements tailored to users, provide social media functions, measure advertisement impressions and clicks. We also gather information on users' site usage status and provide them to social media, advertisement distribution and data analysis partners. Each partner may use this information in combination with other information that the user provided to each partner or other information gathered when the user used the service of each partner.

Analytics, Ads