Wie man Element mit dem folgenden Zeiger des Symbols zieht?Ziehen des Elements mit dem Symbol, das dem Zeiger folgt Einheit C#
VIELLEICHT NIMMT ES EINIGE ZEITEN, UM ALLE CODE ZU SEHEN. Vielen Dank. Vorher für Ihre Aufmerksamkeit.
Aber ich habe ein wenig Code zuvor getan. Und es wird erfolgreich ausgeführt, aber es gibt einen Fehler in meinem Code. Eigentlich folgt das Ziehen des Icons dem Zeiger, aber es ist nur vorübergehend.
Und meine Vorhersage ist, weil ich einen Paging-Inventar Storage 1, 2 und 3 mache. Wenn Alle 3 Storgae sichtbar ist, läuft das Ziehen des Item-Icons erfolgreich mit dem Mauszeiger. Aber wenn einer der Lagerbestände zum Beispiel ausgeblendet war: Ich habe einen Klickspeicher 2, dann sind Speicher 1 und 3 ausgeblendet. Wenn ich das Element ziehe, folgt das Symbol nicht dem Zeiger. Es wird hart. Aber immer noch kann Artikel Slot tauschen. Nur das Symbol folgt nicht dem Zeiger.
Unten ist mein Code es ein wenig lang :) Ich werde den Detailcode geben.
slotScript.cs (dieses Skript ist ein prefabs von Slot, das Element Symbol zeigen, Menge)
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections.Generic;
public class slotScript : MonoBehaviour, IPointerDownHandler, IPointerEnterHandler, IPointerExitHandler, IDragHandler {
Image itemImage;
Sprite icon;
Text amount;
public int slotNumber;
inventory inventoryx;
player Playerx;
item temp;
menu menux;
dragitemicon dragger;
// Use this for initialization
void Start() {
inventoryx = GameObject.FindGameObjectWithTag ("inventory").GetComponent<inventory>();
itemImage = gameObject.transform.GetChild (0).GetComponent<Image>();
amount = gameObject.transform.GetChild (1).GetComponent<Text>();
}
// Update is called once per frame
void Update() {
//Show Images Icon Slot Inventory
if (inventoryx.Player.items[slotNumber].itemName != null) {
itemImage.enabled = true;
icon = Resources.Load<Sprite> (inventoryx.Player.items[slotNumber].itemIcon + "/" + inventoryx.Player.items[slotNumber].itemName);
itemImage.sprite = icon;
amount.text = inventoryx.Player.items[slotNumber].itemStock.ToString();
amount.enabled = true;
} else {
itemImage.enabled = false;
}
}
public void OnPointerDown (PointerEventData data) {
if (inventoryx.Player.items[slotNumber].itemType == item.ItemType.Raw) {
inventoryx.Player.items [slotNumber].itemStock--;
}
//Debug.Log (transform.name);
if (inventoryx.Player.items [slotNumber].itemName == null && inventoryx.draggingitem) {
inventoryx.Player.items [slotNumber] = inventoryx.getdragitem;
inventoryx.closeDragItem();
//inventoryx.dragitemicon.GetComponent<Image>().sprite = null;
} else if (inventoryx.draggingitem && inventoryx.Player.items[slotNumber].itemName != null) {
inventoryx.Player.items[inventoryx.indexofdragitem] = inventoryx.Player.items[slotNumber];
inventoryx.Player.items[slotNumber] = inventoryx.getdragitem;
inventoryx.closeDragItem();
}
}
//On Drag Close ToolTips and Show Drag Item
public void OnDrag (PointerEventData Data) {
if (inventoryx.Player.items[slotNumber].itemType == item.ItemType.Raw) {
inventoryx.Player.items[slotNumber].itemStock++;
}
if (inventoryx.Player.items[slotNumber].itemName != null) {
inventoryx.showDragItem(inventoryx.Player.items[slotNumber], slotNumber);
dragger.showDragItem(inventoryx.Player.items[slotNumber], slotNumber);
inventoryx.Player.items[slotNumber] = new item();
inventoryx.closeToolTips();
amount.enabled = false;
}
}
}
Wie ziehen Code ändern oben i unten an diesem Code verwendet:
public class Draggable : MonoBehaviour,
IBeginDragHandler, IDragHandler, IEndDragHandler {
public void OnBeginDrag(PointerEventData eventData) {}
public void OnDrag(PointerEventData eventData) {
//Debug.Log ("OnDrag");
transform.position = eventData.position;
}
public void OnEndDrag(PointerEventData eventData) {}
}
Viele dank
Dennis
Die Idee ist, ein [MCVE] zu erstellen, das das Problem reproduziert. Schwerpunkt auf * minimal *. Das ist eine Menge Code, den Sie von jemandem erwarten. –
@CodyGray, ich habe den Code verkürzen. Nicht verwandter Code in einem Drag-System wurde gelöscht :) –