私は自分のシーンに2つの3dボタンを持っています。ボタンのいずれかを注視すると、OnPointerEnterコールバックが呼び出され、ポインタが注視したオブジェクトを保存します。Unity Vuforia Google VR - GameObjectへのonPointerEnterを作成できません。
GamepadでFire1を押すと、Resourcesフォルダから取得した資料が適用されます。 2番目のボタンを見つめてFire1ボタンを押すと、両方のボタンが同時に変わるという問題が発生しました。
これは、私はいくつかの論理エラーが検出され、唯一のポインタがに見つめたが、私はもっと混乱してきたオブジェクトを管理するために別のクラスを作ってみました私は、ボタンの両方に
using UnityEngine;
using UnityEngine.EventSystems;
using Vuforia;
using System.Collections;
public class TriggerMethods : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
Material _mat;
GameObject targetObject;
Renderer rend;
int i = 0;
// Update is called once per frame
void Update() {
if (Input.GetButtonDown("Fire1"))
TukarMat();
}
public void OnPointerEnter(PointerEventData eventData)
{
targetObject = ExecuteEvents.GetEventHandler<IPointerEnterHandler>(eventData.pointerEnter);
}
public void OnPointerExit(PointerEventData eventData)
{
targetObject = null;
}
public void TukarMat()
{
Debug.Log("Value i = " + i);
if (i == 0)
{
ApplyTexture(i);
i++;
}
else if (i == 1)
{
ApplyTexture(i);
i++;
}
else if (i == 2)
{
ApplyTexture(i);
i = 0;
}
}
void ApplyTexture(int i)
{
rend = targetObject.GetComponent<Renderer>();
rend.enabled = true;
switch (i)
{
case 0:
_mat = Resources.Load("Balut", typeof(Material)) as Material;
rend.sharedMaterial = _mat;
break;
case 1:
_mat = Resources.Load("Khasiat", typeof(Material)) as Material;
rend.sharedMaterial = _mat;
break;
case 2:
_mat = Resources.Load("Alma", typeof(Material)) as Material;
rend.sharedMaterial = _mat;
break;
default:
break;
}
}
を添付スクリプトです。あなたがFIRE1を押したときに
ホープ一部が
が
ありがとうございます。私はOnPointerEnterとOnPointerExitコールバックの両方でテストを行いました。どちらも動作しました。 –
@MuadzirAzizおよびtargetObject.GetComponent(); OnPointerExitの後にnullを返さないのですか? –