您好我最近开始学习Unity 在教程之后我有一个问题。
这是一个需要初始化的音频参数
1. AudioSource attackSound;
...
2. AudioSource[] audios = GetComponents<AudioSource>();
3. attackSound = audios [0];
我不明白2&amp;的含义。 3,有人可以帮我,或者也可以 抱歉我的英语和第一次使用C#(已经学过C&amp; JAVA)
答案 0 :(得分:2)
在第2行,GetComponents<AudioSource>();
被称为通用方法。在<>
之间,您可以指定所需的任何类型,前提是它符合方法所说的任何约束。
GetComponent<>
和GetComponents<>
有一个约束,无论你传递什么类型,都必须从MonoBehaviour
继承。这可以在示例中显示:
var x = GetComponent<int>(); // Won't work. Int does not inherit from MonoBehavior
var y = GetComponent<AudioSource>(); // Works. AudioSource from MonoBehaviour.
GetComponents
将返回一个数组,该数组是组合在一起的相同类型的一组变量,与用于获取该元素的索引配对。例如:
// Creating the string array. This contains three string variables "A", "B", and "C"
string[] strings = new string[]
{
"A", "B", "C"
};
Console.WriteLine(strings[0]); // Returns the first element, in this case "A"
Console.WriteLine(strings[1]); // Returns the second element, in this case "B"
Console.WriteLine(strings[2]); // Returns the third element, in this case "C"
您注意到,数组从0开始计数,而不是从1开始计算,因此要获得第n个元素,您必须使用[n - 1]
,否则您将获得OutOfRangeException
。
因此第3行获取了从GetComponents<AudioSource>();
返回的第一个元素。
所有这一切,阵列都是第1天C#,并且很快就会出现仿制药。在我接触Unity之前,我花了几个月研究C#。仅仅因为Unity是当前的目标,并不意味着你可以跳过必要的步骤。
进入Visual Studio,进行小型练习项目,观看YouTube教程或获取Jon Skeet的C#In Depth First Edition。当您对C#,然后感到满意时,您可以转到Unity。要及时学习一件事,然后走路才能跑步。