【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のアセット販売中!

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

詳細はこちら

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

詳細はこちら

オススメ!