Unity参数初始化

时间:2018-05-06 16:59:25

标签: c# unity3d

您好我最近开始学习Unity 在教程之后我有一个问题。

这是一个需要初始化的音频参数 1. AudioSource attackSound; ... 2. AudioSource[] audios = GetComponents<AudioSource>(); 3. attackSound = audios [0];

我不明白2&amp;的含义。 3,有人可以帮我,或者也可以 抱歉我的英语和第一次使用C#(已经学过C&amp; JAVA)

1 个答案:

答案 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。要及时学习一件事,然后走路才能跑步。