내 씬에 두 개의 3d 버튼이 있습니다. 버튼 중 하나를 보았을 때 OnPointerEnter 콜백을 호출하고 포인터가 가리킨 객체를 저장합니다.Unity Vuforia Google VR - GameObject 자체에 대한 자료 변경을위한 onPointerEnter를 만들 수 없습니다.
게임 패드에서 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;
}
}
의 양쪽에 부착 된 스크립트입니다하지만 난 더 혼란스러워지고 있었다. 일부
도움 받고희망()는 Fire1을 눌러 두 버튼에서 호출에 beeing 당신에게
고마워요. OnPointerEnter 및 OnPointerExit 콜백 모두에서 테스트를 수행했습니다. 둘 다 작동했습니다. –
@MuadzirAziz 및 targetObject.GetComponent(); OnPointerExit 후에 null을 반환하지 않습니까? –