39710人加入学习
(83人评价)
Unity中的C#编程 - 零基础(Unity 2017)

完成于2017-11-06

价格 免费

Input.GetAxis("Horizontal")

unity提供了这个方法,可以判断键盘上按下的左右键

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

由于自定义class没有继承monobehavior,所以class下的method中是不可以通过print来输出的,只能通过Debug.Log()来进行输出

 

如果自定义class中的method需要在该class外进行调用,那么一定要记得定义成public

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

利用类声明的变量叫做对象

要访问某个class中的字段,可以考虑以下这种方法:

在class中把该字段定义为public,那么在calss外就可以

    对象.变量名

由于是public,也可以在class外对class内的字段进行定义、修改

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

每个csharp脚本里都可以有多个类。创建时自动产生的,和文件名相同的类,可以理解为是主类

 

class 类名{

    string name;

    int hp;

    # 以上两个被称作字段

}

 

在别的class里进行自定义类型变量声明:

类名 变量名 = new 类名();

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

unity中有一个build-in class: Vector3

一个Vector3在定义时需要传入x, y, z的三个变量

 

eg.

void CreateEnemy ( Vector3 pos){

    print("设置敌人位置"+pos);

}

 

void Start (){

    CreateEnermy(new Vector3(1, 4, 6));

}

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

枚举类型:

定义:

enum RoleType {

    Mag,

    Soldier,

    Wizard

}

调用:

RoleType rt = RoleType.Mag;

 

这样就可以增加代码的可读性,而不是:

int roleType = 0; //0代表魔法师,1代表...

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

method基本结构:

返回值 方法名(参数)

{

    方法体

}

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

获得数组长度的方法:数组名.Length

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

声明空数组:

eg. int[] hp = { };

更改数组里元素的内容:类比访问

 

声明数组的第二种方法:

eg. int[] hp = new int[10];    创建一个数组,数组长度为10(此时数组会按照默认值0进行初始化)

 

int[] hp = { };

int[] hp;

以上这两个语句是不同的,前者是已经定义好了,后者是没有定义,相当于是不存在的

 

声明数组的第三种方式:

eg. int[] hp = new int[5]{1, 2, 3, 4, 5}

那么此时后面输入的参数个数一定要满足定义时要求的长度

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

数组声明: 类型[] 数组名 = {数组值}

eg. int[] hps = {100, 20, 80, 90, 30};

通过索引访问数组: 数组名[索引]

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

比较运算符:>, <, >=, <=. ==, !=

自增/减运算符:++,--

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

加减乘除

对于除法来说,如果是两个整数相除,且不能整除的情况,小数部分会被自动舍去,输出一个整数

(小数不存在这个问题)

一个整型和一个float类型相加,返回的结果是float类型,这个结果只能由一个float类型接收而不能用int类型

eg. float res4 = 3 + 3.2f

 

加法运算也能用于连接字符串

 

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

bool类型:只有true和false两种类型

初始化:bool isDie = false;

 

char类型:

初始化:char c = 'c';   

(char类型的话只能是单引号,如果是双引号会被理解成字符串,从而产生错误)

string name = "ShallowDream"

(string类型的话就只能是双引号)

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

C#中的数据类型:

 

整型:

short 整数(16位)

int 整数(32位)        *最要求掌握的

long 长整数(64位)

(不同整型的主要区别在于范围不同。

至于为什么存在那么多类型而不是只用一个最大位数的,是因为我们需要尽量去提前考虑某个变量可能的变化范围。

毕竟位数多,所占的内存大小就大。如果内存过大,对于计算机跑游戏也是负担。)

 

浮点型:

float    用于较小的浮点数       *最要求掌握的

double    比float大,15位

float hp = 3.4,这样是会报错的,因为会默认3.4为double类型

所以这个语句正确的写法应该是这样:

float hp = 3.4f

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

声明变量:除了任务8中的声明和赋值同时进行,也可先声明,再赋值

使用变量之前一定要记得初始化

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

VS组合快捷键:ctrl + k  ctrl + c,用于全部注释

声明变量:类型 名字 [= 赋值]

变量名不能以数字开头,可以含数字、字母、下划线 

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

日志输出:第一种方式,直接通过print进行输出。这个print是有限制的,只能在组件里进行使用

只要class名后面有MonoBehaviour,这个class里就可以进行print

日志输出语法:Debug.Log();

print只有在MonoBehaviour里才能用,Debug.Log()方法则可以在任意场合使用

Debug.LogWarning()也是日志输出,跟Log的主要区别在于标识不同,一般用于警告,级别更加严重

Debug.LogError()也是日志输出,级别是最严重的 

通过print只能输出一般的日志,通过Debug.Log则可以输出以上提到的不同级别的日志

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

注释不要破坏原有的语法结构

单行注释://

多行注释:/*       */

VS在多行注释时回车的时候会自动生成*,这个只是帮助保持注释的整洁性

 

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

会根据文件名去查找class

所以说如果文件名和class名不相同,就无法查找到class 

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0

前面的using部分是命名空间,namespace

后面的部分是类,class

Start()只会执行一次,作为开始的时候的初始化

Update()每一帧都会执行一次

//用来写注释

游戏理大概一秒有50帧

[展开全文]
糖醋排骨红烧肉 · 2021-10-27 · 该任务已被删除 0