2016-09-10 2 views
1

"block1"그룹을 끌면 전체적으로 그것을 끌었습니다. 하지만 내가 원하는 것은 "슬롯"에 떨어 뜨려서 그룹을 해제하고 모든 "자식 (큐브)"을 가져 와서 "슬롯"에 다시 붙여 넣기를 원할 때입니다. 각 큐브는 각 슬롯에 있습니다. 어떻게해야합니까? transform.parent = null을 설정하면 블록 패널에서 "block1"을 제거합니다. 여기 C#을 사용하여 Unity에서 부모 개체를 그룹 해제하는 방법?

스크립트입니다 :

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; 
    } 
}