Unity代码分享——一个快速显示所有Sprite为Image_icon的帮助类
Posted avi9111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity代码分享——一个快速显示所有Sprite为Image_icon的帮助类相关的知识,希望对你有一定的参考价值。
第一版,后面肯定会改的
改版二:。。。
using UnityEngine;
using UnityEngine.UI;
#if UNITY_EDITOR
//TODO:快速变化
#endif
/// <summary>
/// 加载所有小图UI到场景中,可做压测用,也可以体验ugui的overdraw
/// </summary>
public class LoadAllSpriteSource : MonoBehaviour
{
//需要两个变量,rootCanvase + 资源(可以是读表,ScriptableObject, 预制体Ref,需要改)
public GameObject spriteSource;
public Canvas canva;
int offsetX = 50;//Sprite的平均尺寸,一般icon 也可能很小10 * 10,这里取平均
int offsetY = 50;
void Start()
{
var inst = Instantiate(spriteSource);
//SpriteSource.Inst.Find()
SpriteSource ss = inst.GetComponent<SpriteSource>();
for (int i = 0; i < ss.m_Objects.Count; i++)
{
//TODO:如果你的项目资源很多,几千个?要考虑加一个数量条件,跳出循环
int x = i / 20;//好像是很简单的list,转 x-y 格子;只是随便用,所以没考虑0-1问题;
int y = i % 20;
Sprite sp = ss.m_Objects[i] as Sprite;
var newUi = new GameObject();
newUi.transform.SetParent(canva.transform,false);
var img = newUi.AddComponent<Image>();
img.sprite = sp;
newUi.transform.position = newUi.transform.position + new Vector3(x * offsetX, y * offsetY,0);//2D ui还是xy就好了,但若想做overdraw压测,只要改成xz,y轴不偏移则明显看到效果
}
}
//TODO:自创建测试场景
public void CreateScene()
{
}
}
using UnityEngine;
using UnityEngine.UI;
#if UNITY_EDITOR
//TODO:快速变化
#endif
/// <summary>
/// 加载所有小图UI到场景中,可做压测用,也可以体验ugui的overdraw
/// </summary>
public class LoadAllSpriteSource : MonoBehaviour
{
//需要两个变量,rootCanvase + 资源(可以是读表,ScriptableObject, 预制体Ref,需要改)
public GameObject spriteSource;
public Canvas canva;
int offsetX = 50;//Sprite的平均尺寸,一般icon 也可能很小10 * 10,这里取平均
int offsetY = 50;
void Start()
{
var inst = Instantiate(spriteSource);
//SpriteSource.Inst.Find()
SpriteSource ss = inst.GetComponent<SpriteSource>();
for (int i = 0; i < ss.m_Objects.Count; i++)
{
//TODO:如果你的项目资源很多,几千个?要考虑加一个数量条件,跳出循环
int x = i / 20;//好像是很简单的list,转 x-y 格子;只是随便用,所以没考虑0-1问题;
int y = i % 20;
Sprite sp = ss.m_Objects[i] as Sprite;
var newUi = new GameObject();
newUi.transform.SetParent(canva.transform,false);
var img = newUi.AddComponent<Image>();
img.sprite = sp;
newUi.transform.position = newUi.transform.position + new Vector3(x * offsetX, y * offsetY,0);//2D ui还是xy就好了,但若想做overdraw压测,只要改成xz,y轴不偏移则明显看到效果
}
}
//TODO:自创建测试场景
public void CreateScene()
{
}
}
以上是关于Unity代码分享——一个快速显示所有Sprite为Image_icon的帮助类的主要内容,如果未能解决你的问题,请参考以下文章
100个 Unity实用技能 | Unity中自定义 2D Sprite 精灵图显示顺序