因此,我正在製作一個簡單的遊戲,將正確的答案放在正確的位置。這是當你把正確的貼紙放在你得分的插槽上時。 例如,如果你把標籤「a」插入槽「b」,那麼你有點。然後貼紙「a」,貼紙成爲插槽「b」的孩子。 問題是,當我使用的遊戲對象的名稱它不工作,我試圖使用debug.log來顯示分數,但它不工作。此腳本是插槽的組件。拖拽手來自腳本是貼紙組件的另一個腳本。 下面是代碼如何比較Unity中GameObject的名稱
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
}
如果有什麼東西跟我解釋失蹤讓我知道。 謝謝。
我剛剛使用draghandler代碼編輯我的問題。 OnEndDrag itembeingdragged = null 是這個問題嗎? –
可能是的。這可能是因爲您在拖動結束後檢查了itemBeingDragged。 – LongarMD