Unity X C#小记之使用List与string的搭配

来源:互联网 发布:怎么域名备案 编辑:程序博客网 时间:2024/05/21 21:36

楔子


由于个人对电子游戏抱有好感,于是就欣然掉坑里面去了。

但作为从未接触过C#和Unity的新手来说,在写代码的时候还是有一定的困难的。

于是选择了一本比较基础的书来学习。

然而这本书似乎还没有翻译的版本,所以还是慢慢来吧( ´_ゝ`)

注意:个人是零基础学习C#和Unity,在下文可能会有不正确的地方,若有大神指正则是万幸。

教材:Learning C# by Developing Games with Unity 3D Beginner's Guide by Terry Norton

由于我是记录一些学起来比较蛋疼的东西,所以会显得比较凌乱,而且基础什么的根本就没有,于是就没什么架构可言。

所以一般来讲我会把涉及到且未展示过的部分写上去。

以后可能会整理的(大概(逃


小记


热身篇


基础中的基础。打开Unity,在Unity里的下方找到Project栏,在其内用鼠标右键可以看到Create(创建),之后可以看到C# Script。请用左键对它猛击!

爱整洁的处女座可以用同样的办法,先把Folder(文件夹)罗列好,再创建.cs也不迟。

若以前有创建过的C Sharp文件,则可直接打开。


代码篇


打开或创建后,请确认上方using的类型是否有囊括System.Collections.Generic和UnityEngine。即:


using System.Collections.Generic;using UnityEngine;


如果没有的话会造成无法使用List、Debug等功能。

其实我用的Unity 5.6.f1里面包括的MonoDevelop在新建的C# Script里会自己囊括,而且它的架构是这样的。


using System.Collections;using System.Collections.Generic;using UnityEngine;public class LearningScript : MonoBehaviour {void Start () // Use this for initialization{}void Update () // Update is called once per frame{}}


所以如果你的Unity版本比我高之类的,也许就不用担心这个问题了。

其中在我所用的教材里面,其第五章对类似于数组的List的应用是比较令人烦恼的(没系统学过布尔的我都觉得里面的bool很好学

而且参照了许多人的Blog,都觉得不知所云(其实是自己的脑子笨!

所以我还是用比较傻瓜的方式来学习。

在教材上,其枚举了My Little Pony的例子(小马大法好ww


using UnityEngine;using System.Collections.Generic;public class LearningScript : MonoBehaviour {void Start (){List<string> myFavoritePonies = new List<string> ();myFavoritePonies.Add ("Princess Cadence");myFavoritePonies.Add ("Fluttershy");myFavoritePonies.Add ("Nightmare Moon");Debug.Log ("This list has " + myFavoritePonies.Count + " poines.");Debug.Log ("The pony's name at index 1 is " + myFavoritePonies[1]);Debug.Log ("The pony's name at index 2 is " + myFavoritePonies[2]);Debug.Log ("The pony's name at index 0 is " + myFavoritePonies[0]);}}

引用 Learning C# by Developing Games with Unity 3D Beginner's Guide, Page 69,Terry Norton.

另外,关于 Princess Cadence 其实是原作者拼错了的,原来应该是 Princess Cadance。同样的东西我就不吐槽三遍了。


当时候码着这东西的时候感觉像数组,然而看完了之后根本就不是数组。例如:


List<string> myFavoritePonies = new List<string> ();

引用 Learning C# by Developing Games with Unity 3D Beginner's Guide, Page 69,Terry Norton.


学过C语言的童鞋们都知道数组需要定义数组中需要包含多少个实际的量,但在这里似乎没有desu。

引用教材的原句就是:

This statement creates an empty List object.

First thing to notice is that List<string> specifies that you are creating a List
of type string.

The name of the List is myFavoritePonies.

Everything on the left side of the assignment operator (=) is creating a variable,
declaring the type and the name.

Everything on the right side is just like assigning a value to a variable, therefore
new List<string() is a method called to create a new List object in computer
memory, and give that memory location the name of myFavoritePonies.

引用 Learning C# by Developing Games with Unity 3D Beginner's Guide,Page 70,Terry Norton.

这里最后一段引用List<string()的错误是原作者的问题→_→


好长啊不想看不想看不想看不想看

其实按照个人的理解是:

此条创造了一个空的List,

这个List的类型是<string>,

List之名即为myFavoritePoines。

于是可以解释成:等号左边是列入“被创造的变量”,说明了其名与类型。(此处的List我用英语动词来理解)

new则是为了创造新的对象,所以等号右边可以解释成创造出“需要写入List的内容” 。

合起来就像是PPAP


而下方的代码


myFavoritePonies.Add ("Princess Cadence");myFavoritePonies.Add ("Fluttershy");myFavoritePonies.Add ("Nightmare Moon");

引用 Learning C# by Developing Games with Unity 3D Beginner's Guide, Page 69,Terry Norton.


则是使用 Add 分别添加三个小马到 myFavoritePonies 这个 List 里面去了。

这个过程是有顺序的

Princess Cadance是第0个,

Fluttershy是第1个,以此类推。


Debug.Log ("This list has " + myFavoritePonies.Count + " poines.");Debug.Log ("The pony's name at index 1 is " + myFavoritePonies[1]);Debug.Log ("The pony's name at index 2 is " + myFavoritePonies[2]);Debug.Log ("The pony's name at index 0 is " + myFavoritePonies[0]);

引用 Learning C# by Developing Games with Unity 3D Beginner's Guide, Page 69,Terry Norton.


Debug.Log会在Unity的Console里显示文字。

以前用惯C语言直接用printf的pong友请你停一下靴靴

只要用半角双引号将所要说的内容装入到里面去就好了。想要引入某个东西的话,按照“+ ‘变量’”的语法加入就好了。

其中的Count是指数(shǔ)数(shù),可以数出myFavoritePonies这个List当中到底有多少条内容。

myFavoritePonies[0]则是myFavoritePonies这个List中的第0个内容。


测试篇


从MonoDevelop中保存文件后,回到Unity。

将刚刚写好的文件指定(拖动)到某个物体上(Camera也行)后,

将Project栏换成Console栏,就可以按上面的播放按钮了。

结果,在Console栏会显示出

This list has 3 poines.
UnityEngine.Debug:Log(Object)

The pony's name at index 1 is Fluttershy
UnityEngine.Debug:Log(Object)

The pony's name at index 2 is Nightmare Moon
UnityEngine.Debug:Log(Object)

The pony's name at index 0 is Princess Cadence
UnityEngine.Debug:Log(Object)

那就算ok的了,毕竟你要printfDebug出来的Log就应该是这个样子的。

唯三吐槽的就应该是句号和公主,还有口水话太多【xx】