Так что я делаю простую игру, чтобы поместить правильный ответ в нужном слоте. который, когда вы кладете правильную наклейку на слот, вы получили оценку. для примера, если вы положили наклейку «a» в слот «b», тогда вы получили точку. а затем наклейку «a», наклейка станет дочерней слот «b». проблема в том, что я использую имя игрового объекта, это не работает, я попытался использовать debug.log, чтобы показать оценку, но он не работает. этот скрипт является компонентом слота. Драгандлер из другого сценария, скрипт является компонентом наклейки. Вот кодКак сравнить имя GameObject в Unity
public void OnDrop (PointerEventData eventData)
{
if (!item) {
DragHandler.itemBeingDragged.transform.SetParent (transform);
if (DragHandler.itemBeingDragged.gameObject.name == "b" && DragHandler.itemBeingDragged.transform.parent.name == "slot2") {
score = score + 25;
nilai = score.ToString();
Debug.Log ("score: "+nilai);
}}}
но когда я использовал этот код, чтобы показать имя слота и наклейки это работа
public void OnDrop (PointerEventData eventData)
{
if (!item) {
DragHandler.itemBeingDragged.transform.SetParent (transform);
Debug.Log ("slot: "+DragHandler.itemBeingDragged.transform.parent.name + "item : "+DragHandler.itemBeingDragged.gameObject.name);
}
}
это код draghandler
using UnityEngine;
с использованием System.Collections; с использованием UnityEngine.EventSystems;
класс DragHandler общественности: MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler {
public static GameObject itemBeingDragged;
Vector3 startPosition;
Transform startParent;
#region IBeginDragHandler implementation
public void OnBeginDrag (PointerEventData eventData)
{
itemBeingDragged = gameObject;
startPosition = transform.position;
startParent = transform.parent;
GetComponent<CanvasGroup>().blocksRaycasts = false;
}
#endregion
#region IDragHandler implementation
public void OnDrag (PointerEventData eventData)
{
startPosition = Input.mousePosition;
//Debug.Log ("namanya : " + itemBeingDragged.name);
}
#endregion
#region IEndDragHandler implementation
public void OnEndDrag (PointerEventData eventData)
{
itemBeingDragged = null;
GetComponent<CanvasGroup>().blocksRaycasts = true;
if (transform.parent == startParent) {
transform.position = startPosition;
}
}
#endregion
}
Если что-то не хватает с моим объяснением, дайте мне знать. Спасибо.
Я только что отредактировал свой вопрос с кодом драгандлера. OnEndDrag itembeingdragged = null - это проблема? –
Наверное, да. Возможно, вы проверяете itemBeingDragged после окончания перетаскивания. – LongarMD