//保存需要排序的精灵容器
public GameObject[] Sprites;
public Transform centrePoint;//椭圆的中心点
public float anglecheap = ;//每个方块间的角度偏移
//保存位置点
private List<Vector3> location = new List<Vector3>();
private float angle = ;//第一个保证是中心位置的,当前到的角度
private float firstangle = ;//记录第一个角度,用以左右对称
public float r = ;//椭圆的两个弦长
public float R = ;
int size = ;//即对象数组的一半,奇数为总长度+1/2,偶数为一半<pre name="code" class="csharp">// Use this for initialization
void Start()
{//初始化size
if (Sprites.Length % == )
{
size = Sprites.Length / ;
}
else
{
size = (Sprites.Length + ) / ;
}
//排序分级显示
makespriteSort();
//重置渲染层级
ResetDeep();
}
//给这些精灵排序显示
void makespriteSort()
{
//取出椭圆的中心点
Vector3 center = centrePoint.position;
//判断该数组的个数奇偶性,如果是偶数,那么需要留出一个来放到对面
if (Sprites.Length % == )
{
//右半边
for (int i = ; i < size; i++)
{
Sprites[i].transform.position = getPosition(angle, center); angle += anglecheap;
}
//第一个已经得是左边了
angle = firstangle - anglecheap;
//左半边
for (int i = size; i < Sprites.Length - ; i++)
{
Sprites[i].transform.position = getPosition(angle, center);
angle -= anglecheap; }
//最后一个
Sprites[Sprites.Length - ].transform.position = getPosition(firstangle - , center); return;
}
//如果不是偶数,那么出去中间那个,正好正常显示
else
{
//右半边
for (int i = ; i < size; i++)
{
Sprites[i].transform.position = getPosition(angle, center); angle += anglecheap;
}
//第一个已经得是左边了
angle = firstangle - anglecheap;
//左半边
for (int i = size; i < Sprites.Length; i++)
{
Sprites[i].transform.position = getPosition(angle, center); angle -= anglecheap;
}
return;
} }
//获取当前角度的坐标
Vector3 getPosition(float _angle, Vector3 _centerposition)
{
float hudu = (_angle / 180f) * Mathf.PI;
float cosx = Mathf.Cos(hudu);
float sinx = Mathf.Sin(hudu);
float x = _centerposition.x + R * cosx;
float y = _centerposition.y + r * sinx;
Vector3 point = new Vector3(x, y, );
//添加到容器保存
location.Add(point);
return point;
} //根据当前左右容器调整所有控件的渲染层级
void ResetDeep()
{
int dep = ;
//右半边
for (int i = size - ; i >= ; i--)
{
Sprites[i].GetComponent<Transform>().SetSiblingIndex(dep);
dep++;
}
//dep = 0;
//左半边
for (int i = Sprites.Length - ; i >= size; i--)
{
Sprites[i].GetComponent<Transform>().SetSiblingIndex(dep);
dep++;
}
}

unity中将多个图片进行椭圆排序的更多相关文章

  1. Unity搭建简单的图片服务器

    具体要实现的目标是:将图片手动拷贝到服务器,然后在Unity中点击按钮将服务器中的图片加载到Unity中. 首先简答解释下 WAMP(Windows + Apache + Mysql + PHP),一 ...

  2. unity 内存中切割图片

    一般的说我们切割图片是将一张图片资源切割成更小的图片资源,也就是说在资源上就进行了切割,比如ugui上的切割方法. 如果我们有一些情况比如做拼图,可能让玩家自己选择自己的生活照作为拼图的原图. 那么我 ...

  3. 如何对sharepoint图片库的文件夹的图片按照时间排序并分页显示

    /// <summary> /// 获取图片库第一层文件夹--根据文件夹名称排序 /// </summary> /// <param name="siteUrl ...

  4. Unity 读取资源(图片)

    方法一: 采用Resource.Load方法读取,读取在Unity中Assets下Resources目录下的资源名(不采用后缀). //图片放在Asset/Resources/ Texture2D t ...

  5. C#与unity中base64string和图片互转

    C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...

  6. iOS相册中图片按照时间排序

    ios相册默认是按照时间从过去到现在排列,图片顺序有正序和逆序,group可以用以下方法来选择顺序 /** @param NSIndexSet 需要获取的相册中图片范围 @param NSEnumer ...

  7. Unity之读取本地图片

    1.下载Opencv for unity. 2.把OpenCVForUnity下的StreamingAssets拖到Assets下. 3.点击Tools->opencv for unity-&g ...

  8. Unity加载本地图片的2种方式

    1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...

  9. Unity加载外部图片

    在这里记录一下在 Unity3D 中分别使用 WWW 和 IO 流加载外部图片 使用 WWW 加载 /// <summary> /// 使用 WWW 加载图片,并赋值给 _rawImage ...

随机推荐

  1. pycharm中代码整体缩进

    整体缩进 :  1.选中需要缩进的代码 2.Tab键 反向缩进:  shift+Tab

  2. Sysinternals Utilities

    https://docs.microsoft.com/zh-cn/sysinternals/ Sysinternals 之前为Winternals公司提供的免费工具,Winternals原本是一间主力 ...

  3. 队列ADT

    队列 队列是FIFO表,使用队列时在队尾(rear)插入元素,称之为入队(enqueue),以及在对头(front)删除并返回元素值,称之为出队(dequeue). 任何表的实现都可以用于实现队列结构 ...

  4. 双系统安装Ubuntu

    U盘制作教程参考Ubuntu官网 1.Ubuntu安装 1)分出空闲空间:首先,在现有计算机下划出一个专门给Ubuntu的磁盘分区,推荐Windows自带的磁盘管理工具.快捷键“win+X”-> ...

  5. Python数据分析Numpy库方法简介(四)

    Numpy的相关概念2 副本和视图 副本:复制 三种情况属于浅copy 赋值运算 切片 视图:链接,操作数组是,返回的不是副本就是视图 c =a.view().创建a的视图/影子和切片一样都是浅cop ...

  6. springboot之jar包部署步骤

    eclipse中: 1.单击整个项目 run as - maven clean - maven install 2.找到项目所在的路径 找到所有的jar包 3.把jar包放到linux对应的文件夹 l ...

  7. zabbix 乱码问题

    一.乱码原因 查看cpu负载,中文乱码如下 这个问题是由于zabbix的web端没有中文字库,我们最需要把中文字库加上即可 二.解决zabbix乱码方法 2.1 上传字体文件到zabbix中 找到本地 ...

  8. qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection

    connect用于连接qt的信号和槽,在qt编程过程中不可或缺.它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置. Qt::AutoConnection: 默认值,使用 ...

  9. 简单代码生成csv文件(excel)

    $arr = array('');// 目标数组 header("Content-Type:application/vnd.ms-excel;charset=gbk"); head ...

  10. Maven Web Project设置Webcontent路径

    1,新建maven-archetype-webapp 2,右键项目-->Properties-->选中Project Facets中的Runtimes标签,然后Java版本改为1.8,Dy ...