PacketCell - Right
PacketContainer
PacketLabel
PacketCell - Left
PacketContainer
PacketLabel
BoxCollider
UIDragDropItem
using System; using UnityEngine; /// <summary> /// 第一個本身建立的拖拽功能 /// </summary> public class MyFirstDragDropItem:UIDragDropItem { }
BoxCollider
UIDragDropContainer
GMUser.cs
using System; /// <summary> /// 用戶管理器 /// </summary> public class GMUserManager { //存儲當前正在玩遊戲的玩家信息 private static GMUser user = null; //公開訪問器 public static GMUser User{ get { if (GMUserManager.user == null) { GMUserManager.user = new GMUser (); } return GMUserManager.user; } } } public class GMUser { //遊戲用戶的姓名 public string Name{set;get;} public GMUser () { //設置每一個用戶的默認姓名是Right this.Name = "Right"; } }
MyFirstDragDropItem.cs
using System; using UnityEngine; /// <summary> /// 第一個本身建立的拖拽功能 /// </summary> public class MyFirstDragDropItem:UIDragDropItem { private GameObject sourceParent; /// <summary> /// 重寫父類的拖拽開始函數 /// </summary> protected override void OnDragDropStart () { //當拖拽開始時存儲原始的父對象 this.sourceParent = this.transform.parent.gameObject; base.OnDragDropStart (); } /// <summary> /// 重寫父類的拖拽釋放函數 /// </summary> protected override void OnDragDropRelease (GameObject surface) { //若是不是拖拽到場景表面的話 if (!surface.name.Equals ("UI Root")) { //尋找surface對象的父對象 GameObject cell = surface.transform.parent.gameObject; //判斷當前單元格的對象姓名 if (cell.name.Equals ("PacketCell - Left")) { GMUserManager.User.Name = "Left"; } if (cell.name.Equals ("PacketCell - Right")) { GMUserManager.User.Name = "Right"; } } else { //其餘的錯誤位置時,重置父子關係 this.transform.parent = this.sourceParent.transform; } //最終調用父類的功能 base.OnDragDropRelease(surface); //調整位置 this.transform.localPosition = new Vector3(0,0,0); } }
Test.script
掛載在MainCamera對象上的腳本git
using UnityEngine; using System.Collections; public class TestScript : MonoBehaviour { //指向遊戲中間的那個label控件 public UILabel label; // Use this for initialization void Start () { } // Update is called once per frame void Update () { this.label.text = GMUserManager.User.Name; } }
工程存放位置github