用PreviewRenderUtility就不用自己再去创建摄像机来做模型在Editor下的预览了

需要注意,默认是用场景天空盒和场景灯光。参考ShaderForge编辑器的做法,配置自定义灯光

这些Unity都有提供接口,不用自己再去创建

using UnityEngine;
using System.Collections;
using UnityEditor;
using UnityEditorInternal; public class Foo : EditorWindow
{
Mesh mPreviewMesh;
Material mPreviewMaterial;
PreviewRenderUtility mPreviewRenderUtility; [MenuItem("Tools/Foo")]
static void Setup()
{
GetWindow<Foo>();
} void OnGUI()
{
if (mPreviewRenderUtility == null)
{
mPreviewRenderUtility = new PreviewRenderUtility();
mPreviewRenderUtility.m_Camera.farClipPlane = ;
mPreviewRenderUtility.m_Camera.clearFlags = CameraClearFlags.SolidColor;
mPreviewRenderUtility.m_Camera.transform.position = new Vector3(, , -); var go = GameObject.CreatePrimitive(PrimitiveType.Cube);
var meshFilter = go.GetComponent<MeshFilter>();
mPreviewMesh = meshFilter.sharedMesh;
mPreviewMaterial = go.GetComponent<MeshRenderer>().sharedMaterial; DestroyImmediate(go);
} var drawRect = new Rect(, , , );
mPreviewRenderUtility.BeginPreview(drawRect, GUIStyle.none); InternalEditorUtility.SetCustomLighting(mPreviewRenderUtility.m_Light, new Color(0.6f, 0.6f, 0.6f, 1f)); mPreviewRenderUtility.DrawMesh(mPreviewMesh, Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(, , ), Vector3.one), mPreviewMaterial, ); mPreviewRenderUtility.m_Camera.Render();
var texture = mPreviewRenderUtility.EndPreview(); InternalEditorUtility.RemoveCustomLighting(); GUI.Box(drawRect, texture);
}
}

效果:

天空盒的话可以自行配置一个带Cubemap的shader:

PreviewRenderUtility的Example的更多相关文章

随机推荐

  1. FTP在CentOS上安装与使用

    安装: yum install -y vsftpd 相关配置文件: /etc/vsftpd/vsftpd.conf //主配置文件,核心配置文件 /etc/vsftpd/ftpusers //黑名单, ...

  2. 〖Linux〗实时更新 hosts 文件的脚本

    适用场景: 下载了一个smarthosts的hosts文件,但hosts文件过旧导致一些ip地址已失效无法访问网络. 脚本使用: ./hostsupdate # 直接从 /etc/hosts 中获得需 ...

  3. mybatis-generator生成逆向工程两种方式

    本文博客地址:http://blog.csdn.net/soonfly/article/details/64499423 逆向工程下载 链接:https://pan.baidu.com/s/1YOAq ...

  4. Electromagnetic radiation and Radio 电磁波/电磁辐射和无线电波

    电磁辐射,又称电磁波,是由同相振荡且互相垂直的电场与磁场在空间中以波的形式传递能量和动量,其传播方向垂直于电场与磁场构成的平面. 电磁辐射的载体为光子,不需要依靠介质传播,在真空中的传播速度为光速.电 ...

  5. 【table】给table表格设置一个通用的css3样式(默认有斑马条纹)

    /* = 表格(默认有斑马条纹) ------------------------------------------ */ .data-table { margin: 10px 0; } .data ...

  6. ios实例开发精品文章推荐(8.12)11个处理触摸事件和多点触摸的JS库

    11个处理触摸事件和多点触摸的JS库 触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的Web应用,我们需要借助浏览器的触摸事件来实现. ...

  7. 使用btrace来找出执行慢的方法

    转载于:https://shaojun.name/2016/07/260 btrace script import static com.sun.btrace.BTraceUtils.name; im ...

  8. mount 需要同时设置 noatime 和 nodiratime 吗?

    相信对性能.优化这些关键字有兴趣的朋友都知道在 Linux 下面挂载文件系统的时候设置 noatime 可以显著提高文件系统的性能.默认情况下,Linux ext2/ext3 文件系统在文件被访问.创 ...

  9. Android 获取包名,版本信息

    Android 获取包名,版本信息及VersionName名称     <span style="font-size: 14px;">private String ge ...

  10. 【HTML】WWW简介

    www 什么是WWW www(world wide web),又称为万维网,或通常称为web,是一个基于超文本方式的信息检索服务工具. WWW的工作模式 C/S结构(client/server结构), ...