図示のように:
C#コード:
1 使用にSystem.Collectionsを、 2 使用System.Collections.Genericは; 3。 使用UnityEngine; 4。 5。 パブリック クラスSpriteRendererTest:{MonoBehaviour 6。 一覧<変形>一覧= 新しい新しいリスト<変形>(); // 親オブジェクトストアの子オブジェクト 7 リスト< フロート > = rendererWidthList 新しい新しいリスト< フロート >(); // メモリサブオブジェクトの幅 。8 専用のVector3 centerPos = Vector3.zero; // 中心位置 9 プライベート フロート OFFSET =0.2F ; //は、オフセット 10 プライベート フロート長= は0.0fを ; // 長さを初期化する 。11 12である ボイド開始(){ 13は //はすべてオブジェクト横切る 14 のための(INT I = 0 ; I <gameObject.transform.childCount。 ++ I ){ 15 VAR子供= gameObject.transform.GetChild(I); 16 VaRの幅= child.GetComponent <SpriteRenderer> ().sprite.bounds.size.x; 17。 IF(IはgameObject.transform.childCountを< - 1。 ) 18 { 19。 長さ+幅+ = ; OFFSET 20である } 21れる 他{ 22は 長さ+ = 幅; 23である } 24 list.add(子); 25 rendererWidthList.Add(幅)は、 26である } 27 VAR STARTX = centerPos.x -長さ/ 2.0f ; // 最初の子オブジェクトの左境界 28 のforeach(VARの子供におけるリスト) 29 { 30 int型のインデックス= 0; 31 child.transform.position = 新規のVector3(STARTX + rendererWidthList [インデックス] / 2.0f、0、0 ); 32 STARTX = STARTX +オフセット+ rendererWidthList [インデックス]。 33 インデックス+ = 1 ; 34 } 35 } 36 }
LUAコード:
1 - 创建数组 2 ローカル親= UGameObject.Find(" 親" ) 3 ローカル objectList = {} 4 ローカル rendererWidthList = {} 5 のための i = 1、parent.transform.childCountを行う 6 ローカル子= parent.transform:でGetChild (I - 1 ) 7 ローカルレンダラ= 子:GetComponent(typeof演算(USpriteRenderer)) 8 ローカル幅= renderer.sprite.bounds.size.x 9 table.insert(objectList、子) 10 table.insert (rendererWidthList、幅) 11 の端部 12 13 ローカル長さ= 0 - 初始化长度 14 ローカルオフセット= 0.2 - 间隔 15 のための i = 1、#objectListを行う 16 ローカル OBJ = objectList [I ] 17 ローカル幅= rendererWidthList [i]が 18 であれば、私== #objectList 次いで 19 長さ=長さ+ 幅 20 休憩 21 端 22 長さ=長さ+幅+は、オフセット 23 の端部 24 25 ローカル centerPos = Vector3.zero - 中心位置 26 ローカル STARTX = centerPos.x -長さ/ 2 - 初始位置 27 28の ために、I = 1 #objectListは、実行 29 ローカル OBJを= objectList [I] 30 ローカル幅= rendererWidthList [I] 31 obj.transform.position =のVector3(STARTX +幅/ 2、0、0 ) 32 STARTX = STARTX +幅+は、オフセット 33 の端を