2016-08-04 11 views
0

Also mache ich ein einfaches Spiel, um die richtige Antwort in den richtigen Slot zu setzen. Das ist, wenn Sie den richtigen Aufkleber auf den Schlitz setzen Sie Punktzahl haben. für das Beispiel, wenn Sie den Aufkleber "a" zum Schlitz "b" setzen, dann haben Sie Punkt. und dann der Aufkleber "a", der Aufkleber wird Kind des Schlitzes "b". das Problem ist, wenn ich den Namen des Spielobjekts es funktioniert nicht, habe ich versucht mit debug.log, um die Punktzahl anzuzeigen, aber es funktioniert nicht. Dieses Skript ist Bestandteil des Slots. Der Draghandler stammt von einem anderen Skript, das Script ist Bestandteil des Stickers. Hier ist der CodeWie man den Namen eines GameObjects in Unity vergleicht

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); 
     }}} 

aber wenn ich diesen Code verwendet, um den Namen des Schlitzes zu zeigen und den Aufkleber es ist Arbeit

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); 
     } 
    } 

Dies ist der Code für draghandler

using UnityEngine; 

mit System.Collections; mit UnityEngine.EventSystems;

public class 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 

}

Wenn etwas fehlt mit meiner Erklärung gibt es lassen Sie mich wissen. Danke.

Antwort

0

Ich kann den Code für den Drag-Handler nicht sehen, aber lässt er den Artikel fallen, nachdem Sie ihn freigegeben haben? Wenn dies der Fall ist, kann das Objekt, das gezogen wurde, nicht enthalten sein. Wenn Sie das DragHandler.itemBeingDragged überprüfen, kann es also möglicherweise null zurückgeben.

+0

Ich habe gerade meine Frage mit dem Draghandler-Code bearbeiten. OnEndDrag itembeingebragged = null ist das das Problem? –

+0

Wahrscheinlich ja. Es kann sein, dass Sie nach dem Ziehen den itemBeingDragged überprüfen. – LongarMD