C#教程之2d图片依次排列在屏幕中间(SpriteRender

金沙澳门官网网址:www.js333com

VB.net 2010 视频教程 VB.net 2010 视频教程 VB.net 2010 视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • C#教程之2d图片依次排列在屏幕中间(SpriteRender

  • 2019-10-18 21:18 来源:www.js333com

如图所示:

 C#代码:

复制代码
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 5 public class SpriteRendererTest : MonoBehaviour {
 6     List<Transform> list = new List<Transform>();  // 存储父物体的子对象
 7     List<float> rendererWidthList = new List<float>(); // 存储子对象的宽度
 8     private Vector3 centerPos = Vector3.zero;  // 中心位置
 9     private float offSet = 0.2f; //偏移量
10     private float length = 0.0f; // 初始化长度
1112     void Start () {
13         // 遍历所有子对象
14         for (int i = 0; i < gameObject.transform.childCount; i++) {
15             var child = gameObject.transform.GetChild(i);
16             var width = child.GetComponent<SpriteRenderer>().sprite.bounds.size.x;
17             if (i < gameObject.transform.childCount - 1)
18             {
19                 length += width + offSet;
20             }
21             else {
22                 length += width;
23             }
24             list.Add(child);
25             rendererWidthList.Add(width);
26         }
27         var startX = centerPos.x - length / 2.0f;  //第一个子对象的左边界
28         foreach (var child in list)
29         {
30             int index = 0;
31             child.transform.position = new Vector3(startX + rendererWidthList[index] / 2.0f, 0, 0);
32             startX = startX + offSet + rendererWidthList[index];
33             index += 1;
34         }35     }
36 }
复制代码

 

lua代码:

复制代码
 1 -- 创建数组
 2     local parent = UGameObject.Find("Parent")
 3     local objectList = {}
 4     local rendererWidthList = {}
 5     for i = 1, parent.transform.childCount do
 6         local child = parent.transform:GetChild(i - 1)
 7         local renderer = child:GetComponent(typeof(USpriteRenderer))
 8         local width = renderer.sprite.bounds.size.x
 9         table.insert(objectList, child)
10         table.insert(rendererWidthList, width)
11     end
1213     local length = 0   -- 初始化长度
14     local offSet = 0.2 -- 间隔
15     for i = 1, #objectList do
16         local obj = objectList[i]
17         local width = rendererWidthList[i]
18         if i == #objectList then
19             length = length + width
20             break
21         end
22         length = length + width + offSet
23     end
2425     local centerPos = Vector3.zero  -- 中心位置
26     local startX = centerPos.x - length / 2  -- 初始位置
2728     for i = 1, #objectList do
29         local obj = objectList[i]
30         local width = rendererWidthList[i]
31         obj.transform.position = Vector3(startX + width / 2, 0, 0)
32         startX = startX + width + offSet
33     end
复制代码

相关教程
Baidu
sogou