对于学校任务,我必须做一个基本的视频游戏。 我正在尝试制作太空游戏的基本版本。
我想要一个包含多个天空盒的阵列,并且在启动游戏时,我希望游戏从阵列中选择一个随机的天空盒。这样你就会感觉每次都在不同的spawnlocation。
任何人都可以帮助我吗?我一直在寻找谷歌,但我找不到任何有用的东西。
天空盒位于名为:
的文件夹中这是我当前的代码,它包含错误。
修改
using UnityEngine;
using System.Collections;
public class RandomSkybox : MonoBehaviour
{
public Material[] materials;
// Use this for initialization
void Start()
{
skyBoxMaterial = materials[Random.Range(0, materials.length)];
RenderSettings.skybox = skyBoxMaterial;
}
// Update is called once per frame
void Update()
{
}
}
错误:
Severity Code Description Project File Line Suppression State
Error CS0103 The name 'skyBoxMaterial' does not exist in the current context SpaceRaiders.CSharp D:\Documenten\Unity\SpaceRaiders\Assets\Scripts\Space\RandomSkybox.cs 10 Active
Error CS1061 'Material[]' does not contain a definition for 'length' and no extension method 'length' accepting a first argument of type 'Material[]' could be found (are you missing a using directive or an assembly reference?) SpaceRaiders.CSharp D:\Documenten\Unity\SpaceRaiders\Assets\Scripts\Space\RandomSkybox.cs 10 Active
Error CS0103 The name 'skyBoxMaterial' does not exist in the current context SpaceRaiders.CSharp D:\Documenten\Unity\SpaceRaiders\Assets\Scripts\Space\RandomSkybox.cs 11 Active
答案 0 :(得分:3)
public Skybox[] skyBoxes;
你必须
就这么简单。在检查器中,将长度设置为“5”,然后拖动您的五个项目。还有更多内容。
同样在最新版本中,您已发布,
skyBoxMaterial = materials[Random.Range(0, materials.length)];
您忘了声明变量。就这么简单。
Material skyBoxMaterial;
skyBoxMaterial = materials[Random.Range(0, materials.length)];
表示“长度”显然是“长度”。不要忘记List<>它是.Count
而非.Length
。