unityc创建CubeMap

转自:http://blog.csdn.net/lyh916/article/details/45270401

首先要创建一个编辑器类。注意一下,helpString与isValid是ScriptableWizard的内置变量,前面不应该加类型修饰符。以下的这个编辑器类是一个向导类。

[csharp] view plain copy

using UnityEngine;
using UnityEditor;
using System.Collections;

public class RenderCubemapWizard : ScriptableWizard {

public Transform renderFromPosition;  
public Cubemap cubemap;  

void OnWizardUpdate()  
{       
    helpString = "Select transform to render from and cubemap to render into";  
    isValid = (renderFromPosition != null) && (cubemap != null);  
}  

void OnWizardCreate()  
{  
    // create temporary camera for rendering  
    GameObject go = new GameObject("CubemapCamera");  
    go.AddComponent();  
    // place it on the object  
    go.transform.position = renderFromPosition.position;  
    go.transform.rotation = Quaternion.identity;  
    // render into cubemap        
    go.GetComponent().RenderToCubemap(cubemap);  

    // destroy temporary camera  
    DestroyImmediate(go);  
}  

[MenuItem("GameObject/Render into Cubemap")]  
static void RenderCubemap()  
{  
    ScriptableWizard.DisplayWizard(  
        "Render cubemap", "Render!");  
}  

}

效果图:


unityc创建CubeMap_第1张图片

1.ScriptableWizard.DisplayWizard("Render cubemap", "Render!");
第一个参数是窗口名字,第二个参数是按钮的名字
2.helpString
窗口名字下的提示
3.isValid
当isValid为true时,按钮才可以被点击,否则不可以被点击
4.OnWizardUpdate()
当向导被打开或只要用户在向导改变了某些东西时被调用
5.OnWizardCreate()
当用户点击按钮时调用

创建一个场景,创建一个空物体(用来作为观察点),在Project视图创建一个Cubemap,把空物体和Cubemap赋值到上面的编辑器空槽中,点击“Render!”


unityc创建CubeMap_第2张图片

unityc创建CubeMap_第3张图片

Camera的RenderToCubemap会把在观察点的前后左右上下六个方向看到的画面全部存放到一个立方体贴图中。

你可能感兴趣的:(unityc创建CubeMap)