我在场景中有两个3d按钮,当我注视任何按钮时,它将调用OnPointerEnter回调并保存指针凝视的对象。Unity Vuforia Google VR - 无法将onPointerEnter改为自身的GameObject更改材质
在游戏手柄上按下Fire1后,我应用从资源文件夹获取的材料。 当我凝视第二个按钮时,我的问题开始了,并且按下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;
}
}
的脚本我感测到的一些逻辑错误和试图使另一个类为仅管理对象的指针注视到但我得到更加困惑。
希望得到一些帮助
谢谢
非常感谢。我已经完成了OnPointerEnter和OnPointerExit回调测试,两者都有效。 –
@MuadzirAziz and targetObject.GetComponent(); OnPointerExit后没有返回null? –