修改天空盒颜色的例子(C#):

using UnityEngine;

using System.Collections;

public class example : MonoBehaviour {

public Color colorStart = Color.blue;

public Color colorEnd = Color.green;

public float duration = 1.0F;

void Update() {

float lerp = Mathf.PingPong(Time.time, duration) / duration;

RenderSettings.skybox.SetColor("_Tint", Color.Lerp(colorStart, colorEnd, lerp));

}

}

修改天空盒材质的例子(C#):

// 加载所有 skybox 纹理

Texture2D sbFront = Resources.Load("Texture/Skybox/skybox_Front") as Texture2D;

Texture2D sbBack = Resources.Load("Texture/Skybox/skybox_Back") as Texture2D;

...

// 创建新的 SkyBox 材质

Material mySkyBoxMat = new Material(Resources.Load("Shaders/myOwnSkyboxShader") as Shader);

// 将所有纹理添加到材质中

mySkyBoxMat.SetTexture("_FrontTex", sbFront);

mySkyBoxMat.SetTexture("_BackTex", sbBack);

// 设置RenderSettings skybox 变量

RenderSettings.skybox = mySkyBoxMat;

稍微完整些的例子(C#):

using UnityEngine;

using System.Collections;

public class SkyboxSetter : MonoBehaviour

{

// 创建Skybox材质

public static Material CreateSkyboxMaterial(SkyboxManifest manifest)

{

Material result = new Material(Shader.Find("RenderFX/Skybox"));

result.SetTexture("_FrontTex", manifest.textures[0]);

result.SetTexture("_BackTex", manifest.textures[1]);

result.SetTexture("_LeftTex", manifest.textures[2]);

result.SetTexture("_RightTex", manifest.textures[3]);

result.SetTexture("_UpTex", manifest.textures[4]);

result.SetTexture("_DownTex", manifest.textures[5]);

return result;

}

public Texture2D[] textures;

void OnEnable()

{

SkyboxManifest manifest = new SkyboxManifest(textures[0], textures[1], textures[2], textures[3], textures[4], textures[5]);

Material material = CreateSkyboxMaterial(manifest);

SetSkybox(material);

enabled = false;

}

// 材质加到天空盒

void SetSkybox(Material material)

{

GameObject camera = Camera.main.gameObject;

Skybox skybox = camera.GetComponent();

if (skybox == null)

skybox = camera.AddComponent();

skybox.material = material;

}

}

public struct SkyboxManifest

{

public Texture2D[] textures;

public SkyboxManifest(Texture2D front, Texture2D back, Texture2D left, Texture2D right, Texture2D up, Texture2D down)

{

textures = new Texture2D[6]

{

front,

back,

left,

right,

up,

down

};

}

}

代码测试结果:

按照RenderSettings.skybox = mySkyBoxMat;方式设置并没有成功,用下面例子中的SetSkybox运行成功。

需要注意的是,Texture目录需要放在Resources目录下,最终的目录结构是这样的:

项目主目录/Assets/Resources/Textures/Skybox/skybox_Front.jpg

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐