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.
Ich habe gerade meine Frage mit dem Draghandler-Code bearbeiten. OnEndDrag itembeingebragged = null ist das das Problem? –
Wahrscheinlich ja. Es kann sein, dass Sie nach dem Ziehen den itemBeingDragged überprüfen. – LongarMD