当前位置: 移动技术网 > IT编程>开发语言>c# > 2d图片依次排列在屏幕中间(SpriteRenderer)

2d图片依次排列在屏幕中间(SpriteRenderer)

2019年10月18日  | 移动技术网IT编程  | 我要评论

如图所示:

 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; // 初始化长度
11 
12     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
12 
13     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
24 
25     local centerpos = vector3.zero  -- 中心位置
26     local startx = centerpos.x - length / 2  -- 初始位置
27 
28     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

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网