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()
    {
        
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值