Когда я навожу курсор на объект, он должен окрашиваться в красный цвет (и так оно и есть), и когда я нажимаю < kbd>1, targetHighlighted скрипта будет установлен на объект, над которым я нахожу курсор в данный момент. В Debug.Log все работает нормально, targetHighlighted верен.
Однако, когда я нажимаю 1, targetHighlighted по-прежнему остается пустым. Не имеет значения, нажимаю ли я ее при наведении курсора на объект или нет.
Мой полный код гораздо обширнее этого. Но в этом разделе кода есть проблема, поэтому я свел ее к следующему:
Код: Выделить всё
using UnityEngine;
using System.Collections;
public class TargetSelectionScript : MonoBehaviour {
// Store the current selected gameobject
GameObject targetHighlighted;
Renderer rend;
Color initialColor = Color.white;
Color selectedColor = Color.red;
public GameControllerScript gameController;
void Update() {
if (Input.GetKeyDown("1")) {
SetTarget();
}
}
void OnMouseEnter() {
SelectTarget();
}
void OnMouseExit() {
ClearTarget();
}
void SelectTarget() {
RaycastHit hitInfo = new RaycastHit();
Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo);
targetHighlighted = hitInfo.transform.gameObject;
rend = targetHighlighted.GetComponent();
rend.material.color = selectedColor;
Debug.Log("Highlighted target: " + targetHighlighted);
}
void ClearTarget() {
Debug.Log(targetHighlighted);
}
void SetTarget() {
Debug.Log(targetHighlighted);
}
}
По сути, почему mouseenter и mouseexit регистрируют правильный объект, а функция setTarget — нет?
Подробнее здесь: https://stackoverflow.com/questions/328 ... cs-raycast