드래그를 사용하여 퍼즐을 만들고 있습니다 &가 단결합니다. 퍼즐 조각은 테트리스 조각과 같으며, 각 퍼즐 조각은 큐브 그룹으로 구성됩니다. 퍼즐 조각을 끌어서 구조물의 누락 된 큐브 (예를 들어, 직사각형)의 슬롯에 떨어 뜨려야한다. Unity, C#. 런타임에 부모의 모든 자녀를 얻는 방법?
위의 스크린 샷
내가 3 자녀/큐브가 "블록 1"라는 큐브의 그룹 관계를 가지고있다, 그것은 또한 게임 큐브가 감소 될 필요가있어서, 슬롯이 있음을 보여줍니다. "block1"을 드래그하고 슬롯에 떨어 뜨렸을 때 슬롯에 3 개의 큐브가 있다는 것을 알면서 슬롯 하나를 차지합니다. 내가 원하는 것은 각각의 큐브가 각 슬롯 (3 슬롯)을 차지하기를 원하는 슬롯에 "block1"(3 개의 3 개의 큐브가 있음)을 떨어 뜨렸을 때입니다. 그래서 내가해야 할 일은 슬롯 1에 놓은 블록 1의 아이들 만 얻는 것입니다. 드래그 할 때 그룹을 드래그하지만 드롭 할 때 모든 큐브가 슬롯을 채울 수 있도록 자식 만 가져옵니다. 제 질문은 블록 1의 모든 아이들을 떨어 뜨리는 방법입니다. 내 slothandler scipt에서 전체 블록/조각을 가져옵니다. 미리 감사드립니다!여기 SlotHandler 스크립트
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class SlotHandler : MonoBehaviour, IDropHandler{ \t
\t
\t public GameObject item {
\t \t get {
\t \t \t if(transform.childCount>0){
\t \t \t \t return transform.GetChild (0).gameObject;
\t \t \t }
\t \t \t return null;
\t \t }
\t }
\t #region IDropHandler implementation
\t public void OnDrop (PointerEventData eventData)
\t {
\t \t if(!item){
\t \t \t DragHandler.piece.transform.SetParent (transform);
\t \t }
\t }
\t #endregion
}
과 DragHandler 스크립트
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 #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 #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 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
}
미안하지만 난 "transform.parent = 부모"를 할 때 암시. 나는 그것을 해결할 수 있습니까? 그냥 원하는 'UnityEngine.GameTransform'에 유형 'UnityEngine.GameObject을'변환 할 수 없습니다 "라는 말에 오류가 블록을 그룹 해제하려면 – Critics
transform.parent = parent.transform –
또는 변환을 공용 변수로 가져올 수 있습니다. public var를 'public Transform parent'로 변경하십시오. –