Unity编辑器扩展-生成prefab的预览图并保存为图片

本文介绍了如何在Unity中为Prefab文件添加预览图,通过自定义编辑器窗口实现类似NGUI的展示方式。利用AssetPreview.GetAssetPreview API生成3D Prefab的预览图,针对2017.2之前的版本和UGUI节点,进行了扩展实现,包括实例化Prefab、使用摄像机渲染到纹理,并将预览图保存为本地图片。
摘要由CSDN通过智能技术生成

Project视图里的prefab文件都是一个蓝色的正方体,我想给它们加个预览图,暂时不知道怎么改Project视图的,但反正我想像NGUI那样有个专门的窗口存放一些常用的prefab,所以做成了如下效果:


关于如何定制窗口,可以参考雨松的教程:Unity3D研究院之拓展自定义编辑器窗口

实现思路:
主要参考自:获取unity prefab的预览图像

unity在2017.2版本可以使用官方自带API:AssetPreview.GetAssetPreview(Object m) as Texture,但此版本前此接口用于有子节点的prefab是无效的,所以只好自己动手:

实例化该prefab,创建摄像机调好参数并Render to texture保存为图片,最后删掉生成的节点毁尸灭迹。但里面只实现了3D prefab的,对于UGUI是无效的,因为UGUI节点需要放在Canvas里才行,而且计算它们包围盒的算法也不同,所以我对此做了扩展:

public static Texture GetAssetPreview(GameObject obj)
{
    GameObject canvas_obj = null;
    GameObject clone = GameObject.Instantiate(obj);
    Transform cloneTransform = clone.transform;
    bool isUINode = false;
    if (cloneTransform is RectTransform)
    {
        //如果是UGUI节点的话就要把它们放在Canvas下了
        canvas_obj = new GameObject("render canvas", typeof(Canvas));
        Canvas canvas = canvas_obj.GetComponent<Canvas>();
        cloneTransform.parent = canvas
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值