我正在使用drag& amp;团结一致。拼图就像俄罗斯方块,每个拼图由一组立方体组成。需要拖动拼图块,然后将其放入结构缺失立方体的槽中(例如矩形)。
上面的截图说明我有一组名为" block1"它有3个孩子/立方体,它还说明游戏中有需要丢弃立方体的插槽。当我拖动" block1"然后掉入插槽,它只占用一个插槽,知道它有3个立方体。我想要的是当我放弃" block1" (它有3个三个立方体)进入插槽我希望每个立方体占据每个插槽(3个插槽)。所以,我认为我需要做的是当我把它放在插槽上时只获得block1的子节点。当我拖动它时,我拖动一个组但是当我放下时只有孩子会得到这样,每个立方体将填充一个插槽。我的问题是,如何让block1的所有孩子掉线?在我的slothandler scipt中它获得了整个块/块。提前谢谢!
这里是SlotHandler脚本
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class SlotHandler : MonoBehaviour, IDropHandler{
public GameObject item {
get {
if(transform.childCount>0){
return transform.GetChild (0).gameObject;
}
return null;
}
}
#region IDropHandler implementation
public void OnDrop (PointerEventData eventData)
{
if(!item){
DragHandler.piece.transform.SetParent (transform);
}
}
#endregion
}

和DragHandler脚本
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class DragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{
public static GameObject piece;
Vector3 startPosition;
Transform startParent;
#region IBeginDragHandler implementation
public void OnBeginDrag (PointerEventData eventData)
{
piece = gameObject;
startPosition = transform.position;
startParent = transform.parent;
GetComponent<CanvasGroup>().blocksRaycasts = false;
}
#region IDragHandler implementation
public void OnDrag (PointerEventData eventData)
{
transform.position = eventData.position;
}
#endregion
#region IEndDragHandler implementation
public void OnEndDrag (PointerEventData eventData)
{
piece = null;
GetComponent<CanvasGroup>().blocksRaycasts = false;
if(transform.parent == startParent){
transform.position = startPosition;
GetComponent<CanvasGroup>().blocksRaycasts = true;
}
}
#endregion
}
&#13;
答案 0 :(得分:0)
你可以在插槽中添加碰撞器,并在碰撞监听器中检查它是否完全就位,然后像这样更改父级:
transform.parent = [Parent Slot GameObject or Transform]
但如果你要按照自己的方式行事,那还可以。我不是这类游戏的专家,所以...... 但主要代码保持不变。使用上面的一行代码更改父级。
如果你想让立方体根本没有父母,你可以说:
transform.parent = null;
或者如果您拥有所有这些的父对象,正如我在屏幕截图(块,面板或画布)中所说的那样,您可以将其作为公共对象添加到脚本中并使其成为父对象。
public GameObject parent;
...
// when you wanna ungroup the objects
transform.parent = parent;