经过大量谷歌搜索后,我的 C# 代码编译没有任何错误,但它仍然无法正常工作。即我的天空盒没有改变。
我已经确认我的路径是正确的。
我认为这一定与我引用天空盒的方式有关。我的理解是基本上有两种方法可以改变,通过代码更新天空盒。一种是通过 RenderSettings.skybox,另一种是通过参考主摄像机上的天空盒。我正在使用前一种方法。以下代码在一个空的游戏对象上。任何 Unity C# 大师都可以提供帮助吗?
using UnityEngine;
using System;
using System.Collections;
public class LoadSkyBox : MonoBehaviour {
private readonly string[] skyboxTextures = {"_FrontTex", "_BackTex", "_LeftTex", "_RightTex", "_UpTex", "_DownTex"};
IEnumerator LoadImg (String skyboxName){
WWW[] www = new WWW[6];
String tempStr;
for (int i = 0;i < 6; i++)
{
tempStr ="file://"+ Application.streamingAssetsPath + "/" + skyboxName + skyboxTextures[i] + ".png";
Debug.Log("tempStr ="+tempStr);
www[i] = new WWW(tempStr);
}
//Material mat = GetComponent<Skybox>().material;
for (int i = 0;i < 6; i++)
{
// wait until the download is done
yield return www;
//mat.SetTexture(skyboxTextures[i],www[i].texture);
RenderSettings.skybox.SetTexture(skyboxTextures[i],www[i].texture);
}
}
void Start () {
StartCoroutine(LoadImg("beach"));
// Images should be named:
// "beach_FrontTex.png"
// "beach_BackTex.png"
// ...
}
}