2016-09-10 21 views
1

当我拖动“block1”组时,我将其作为一个整体进行拖动。但我想要做的是,当我放入“插槽”时,我想取消组合它并获取所有“子(立方体)”,并将其重新保存到“插槽”中。每个立方体到每个插槽。我怎么做?设置transform.parent = null只需从块面板中删除“block1”即可。如何在Unity中使用C#将对象拆分为其父项?

这里的脚本:

using UnityEngine; 
 
using System.Collections; 
 
using UnityEngine.EventSystems; 
 

 
public class DragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{ 
 

 
\t public static GameObject piece; 
 
\t Vector3 startPosition; 
 
\t Transform startParent; 
 
\t public static GameObject cube; 
 

 

 
\t #region IBeginDragHandler implementation 
 

 
\t public void OnBeginDrag (PointerEventData eventData) 
 
\t { 
 
\t \t 
 
\t \t piece = gameObject; 
 
\t \t startPosition = transform.position; 
 
\t \t startParent = transform.parent; 
 
\t \t GetComponent<CanvasGroup>().blocksRaycasts = false; 
 

 

 
\t } 
 

 
\t #endregion 
 

 
\t #region IDragHandler implementation 
 

 
\t public void OnDrag (PointerEventData eventData) 
 
\t { 
 
\t \t transform.position = eventData.position; 
 

 
\t } 
 

 
\t #endregion 
 

 
\t #region IEndDragHandler implementation 
 

 
\t public void OnEndDrag (PointerEventData eventData) 
 
\t { 
 

 
\t \t piece = null; 
 
\t 
 
\t \t GetComponent<CanvasGroup>().blocksRaycasts = false; 
 
\t \t if(transform.parent == startParent){ 
 
\t \t \t transform.position = startPosition; 
 
\t \t \t GetComponent<CanvasGroup>().blocksRaycasts = true; 
 
\t \t } 
 
\t } 
 

 
\t #endregion 
 

 

 

 
}

回答

0

我真的不知道你在问什么在这里,但也有一些方法来设置对象的父母

public class ParentExample : MonoBehaviour 
{ 
    GameObject Child; 
    GameObject ObjectToBeParent; 

    void Start() 
    { 
     //This sets the parent without the worldPos "staying" 
     Child.transform.SetParent(ObjectToBeParent.transform, false); 
     //This sets the parent 
     Child.transform.parent = ObjectToBeParent.transform; 
    } 
} 
相关问题