Unity C# | 父子關係簡介 & 程式控制

2022/02/12閱讀時間約 2 分鐘

前言

  之前提到要撰寫關於父子關係的文章,結果竟然遺忘了,這篇文章主要介紹父子關係,以及相關的程式控制代碼。
  更新:父子物件在進行某些計算時相當好用,在使用父子物件前,也可以思考是否使用座標疊加來讓物件不用進行父子移動。

父子物件

  在Unity中,每一個物件裡面都可以放置物件,而物件下的物件會被稱為子物件,子物件會繼承父物件的一切,包含組件和基本設定。
小箭頭可收納
以左圖為範例,父物件名為「Parent」,子物件名為「child」

資料傳承:以座標為例

  當父物件的世界座標為「0,5,10」,子物件的世界座標為「1,6,11」時,在子物件的座標顯示中會呈現「1,1,1」,也就是以父物件作為基準。

資料傳承:以碰撞為例

  當子物件帶有碰撞Collider,只要與玩家碰撞便會觸發,同時,碰觸到父物件的碰撞範圍一樣會觸發。

程式控制

  我們可以使用一些程式來取得子物件,並藉此來進行一些操作。

取得父物件

gameObject.transform.parent.gameObject;
//父子物件關係儲存在transform

取得子物件

gameObject.transform.GetChild(int index).gameObject;
父物件只能有一個,子物件可以有無數個
由上往下排版分別為0,1,2....index。

取得子物件數量

gameObject.transform.childCount;
//此變數為一個整數(int)

將某物件A變為子物件

A.transform.parent = gameObjct.transform;

將某物件A變為父物件

gameObject.transform.parent = A.transform;

子物件脫離父物件

gameObject.transform.parent = null;

結尾

  這篇文章主要用來記錄父子物件以及程式碼的控制,本身沒有太大的技術難度,只要了解成碼本身怎麼使用即可。
  會撰寫這篇文章,是因為我在Collider碰撞時,子物件觸發了父物件的碰撞事件,導致我去搜尋了父子物件的相關知識,雖然最後沒有用到。
  更新:父子物件除了座標上的變化,還有其他組件跟程式上的共用,因此在進行父子物件的轉移前,要思考是否有必要,如果只是希望一起移動,能不能用其他方式替代?
為什麼會看到廣告
96會員
242內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
發表第一個留言支持創作者!