私はドラッグで&を使ってパズルを作っています。パズルピースはテトリスピースのようなもので、各パズルピースはキューブのグループで構成されています。パズルピースをドラッグして、構造の欠けているキューブのスロット(例えば、長方形)に落とす必要がある。Unity、C#。実行時に親のすべての子供を得る方法?
上のスクリーンショットは、私は3人の子供/キューブを持っている「ブロック1」という名前のキューブのグループを持っていることを示し、それはまた、ゲームキューブをドロップする必要が前記スロットを持っていることを示しています。 「block1」をドラッグしてスロットにドロップすると、3つのキューブがあることを認識して1つのスロットだけを占有します。私が望むのは、3つの3つの立方体を持つ「ブロック1」を、各キューブが各スロット(3つのスロット)を占めるようにするスロットにドロップしたときです。それで、私がする必要があると思うのは、私がスロットに落としたときにblock1の子供だけを得ることです。私はそれをドラッグするときに私はグループをドラッグしますが、私が落としたときに子供たちはすべてのキューブがスロットを埋めるようになるでしょう。私の質問は、block1のすべての子供を落とす方法です。私の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' –