PreviewRenderUtility的Example
用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的更多相关文章
随机推荐
- 虚拟机在NAT模式下主机与宿主机的ip配置
现有如下环境: 宿主机:win7 (IP为100.101.201.20) 虚拟机: SUSE LinuxEterprise 11 64bit (IP为100.101.201.23) 连接模式如下图: ...
- 基于py3和pymysql查询某时间段的数据
#python3 #xiaodeng #基于py3和pymysql查询某时间段的数据 import pymysql conn=pymysql.connect(user='root',passwd='r ...
- python 模块之os.path模块
# -*- coding: cp936 -*- #python 27 #xiaodeng #python 模块之os.path模块 #http://www.cnblogs.com/dkblog/arc ...
- linux下挂载VHD等虚拟磁盘文件
1.RAW格式虚拟磁盘 linux下可以直接挂载raw格式的虚拟磁盘镜像文件. 例如,这里先用dd命令创建一个文件,然后将其格式化为ext4格式(只有一个分区),然后挂载到/mnt目录. 下面的raw ...
- Spring Cloud Zuul的一个坑
Spring Cloud 版本: Dalston.SR5 今天使用Zuul发现一个和动态刷新相关的问题,动态刷新使用的是 /bus/refresh,即我的Zuul连着一个Rabbitmq,我这里是使用 ...
- Windows TCP/IP 临时、保留和封锁端口行为
由网络专家发布 转自:http://blog.163.com/abslh123@126/blog/static/792137962008628105919348/ 本文介绍 Windows 套接字应用 ...
- scala 几个函数小例子
后续补充 /** * Created by dengy on 2017/12/18. */ object grammarPractise { def main(args: Array[String]) ...
- XC文件管理器-打造优美易用的文件管理器
技术:Android+java 概述 XC文件管理器,是基于Android6.0+开发的一个方便易用的文件管理器,具有文件的目录管理和文件的管理,主要包括文件的新建.删除.重命名.复制,移动剪切以 ...
- Android开发环境——调试器 DDMS相关内容汇总
Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT ...
- binary search tree study
今天又写了delete的部分,时间就这么被一天天地浪费了,我感到十分惋惜呀 #pragma once #include "stdio.h" struct Node { Node(i ...