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

完成于2017-11-06

价格 免费

1.脚本的结构

在脚本的开头,是命名空间,Using 后面的文字内容是白色,如果命名空间没有使用(意思是没有使用里里面的方法)那么后面的文字呈现为灰色;

下面的MonoBehiviour类,就是UnityEngine中的类;

不同的命名空间有不同的类,要使用某个命名空间的类,那么就要使用某个命名空间;

创建的脚本,定义的类要和文件名保持一致性

2.声明一个类

定义一个命名空间,在命名空间中定义一个类,

namespece MyGame{

      class gameDate{

      }

}

要引用这个类,就必须使用这个命名空间;

[展开全文]
瞴眳 · 2018-11-23 · 该任务已被删除 0

1.创建脚本的几种方式

在project中的空白处,或者某个文件夹下右击可以创建脚本;

可以点击Hierarchy中的某个物体,在Inspector面板下,点击AddComponent,创建一个脚本。

2.附加脚本

第一种:将创建的脚本拖到Hierarchy面板下游戏物体身上。

第二种:点击游戏物体,将脚本拖入游戏物体的Inspector面板的AddCompoent下面;

第三种:可以在游戏物体的Inspector面板中的AddComponent下添加脚本名称的脚本;

第四种:可以点击游戏物体,在window下点击添加脚本;

 

[展开全文]
瞴眳 · 2018-11-23 · 该任务已被删除 0

1.在类中建立方法

public void Move(){

print(name +"移动");//在此print这个函数没有办法调用,在个方法是在MonoBehivious类中声明的,只能在这个类或继承它的子类中被调用;

Debug.Log(name+"移动");//这个类是系统内置的类,可以调用;

public void Attack(){

Debug。Log(“正在攻击”);

}

void Start() {

enemy1.Move();  //注意类在前面一章节已经声明和初始化;可以直接调用,程序在前一章节;

enemy2.Move();

}

要调用类中的方法,那么方法必须是public类型,不然调用不了,

脚本中的Start方法好像没有调用,而是直接使用,我觉的这其实是一种掉用的形式,只是它加以修饰了,它是unity调用的;

[展开全文]
瞴眳 · 2018-11-23 · 该任务已被删除 0

Enemy enemy1=null  //声明类 null 是指这个类不从在,只有一个名字;

print(ememy);

enemy1.name;  //如果要访问enemy1里面的成员,发现报错why,

Enemy enemy1 =new Enemy();

enemy1.name;//这样还不能访问,要在Enemy的类中,将字段公开,才能访问,

public:

int hp ;

string name;  //公开即可;

print(enemy1.name);  //

输出的是Null;当字符串name没有赋值是,系统默认值是Null;

print(enemy1.hp);//输出的是0;

2.可以修改类变量的参数,并赋值

enemy1.name="wd";

print (enemy1.name);//输出的是wd;

 

 

 

 

 

[展开全文]
瞴眳 · 2018-11-23 · 该任务已被删除 0

1.unity中创建一个脚本命名为player,编辑打开;

public class Player:MonoBehaviour{

class 类,创建一个新的脚本,就是创建一个类,创建一个命名为player的类,这个类是继承MonoBehaviour;   

2.在脚本中建立其他的类

class Enemy{

包含字段和方法:

string name ;

int hp;   //这就是字段相当于成员变量; 自己声明的

}   类不一定要继承

3.类的使用

可以声明变量  

void Start(){

int hp 100;   //内置的变量

Enemy enemy1;

Enemy enemy1 =new Enemy();

}

 

 

 

 

 

[展开全文]
瞴眳 · 2018-11-23 · 该任务已被删除 0

1.实现两个整型的相加

void  Add(int a,int b){

int res = a + b;

}

Add(10,19);   //调用这个函数可以完成函数的相加,但是不会出现结果,在定义的函数中,是定义一个变量来存储结果,所以在调用中会有返回值。在方法内部定义的变量是没办法在外面调用的,那怎么获得res的结果呢,使用返回值;

int Add (int a,int b){

int res=a+b;

return res;

}

int res = Add(10,15);

方法名不能重复,但是上面的变量名重复了,为什么可以,原因是变量、方法名不能在同一个方法函数中被重复,但上面的两个变量名在不同的方法函数中,所以可以重复;

2.如果有返回值,只能有一个返回值,一个方法最多只能有一个返回值,定义的方法前的类型,必须和返回值的类型一致。

string Add (int a,int b);{

int res = a+ b;

return res;   

}

这样会出现报错;

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.方法参数

创造敌人,但敌人的其他属性相同,但参数不同。

void CreateEnemy(Vector3 Pos);

调用:CreateEnemy(New Vector3(1,1,1);

 

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.枚举类型

敌人——魔法师  ,战士 、巫师、坦克、射手等

int roleType =0 //0代表什么、1代表什么等;

enum RoleType{

Mag,

Soldier,

Wizard

}

这时定义好的一个类型, RoleType rt =RoleType.Mag

rt=RoleType.Soldier; 等等

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.重载解决方案

在新建脚本后,修改了脚本的命名后,点击打开,会弹出一个窗口,有几个选项,第一个是重新加载,第二个是重载解决方案,第三和第四个都是忽略;一般选择重载解决方案,并修改类名;

2.method  方法

返回值 方法名(参数)

{方法体}

void 返回值为空;让我想起了ue4中函数蓝图节点,这些蓝图节点中有些是有返回值的有些没有,比如SetActorLocation,没有返回值,但Spawn ActorlofClass是有返回值的。

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.声明一个空数组

int[] hps={};

2.数组类的元素的值可以更改

hps[1]=10;

3.int [] hap =new int [10]; new 构造,10长度

print(hps[0];  注意数组可以不初始化,即可赋值处理,但变量不能;

4.int [ ] hps=null;  print(hps);输出的是Null

  int [ ] hps1 ={ }  ;   输出的是[int 32]

5.  int [ ] hps = new[4 ] {2,3,2,3}

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.声明一个数组

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

int[ ]hps = { 100,50,30,43};数组长度为5

数组索引:从零开始;

访问数组元素:int[2];

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.if语句

if() 达到条件执行if里面的程序

{}

else  ()条件为false执行else里面的程序

{}

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.两个数相除,int res= a/b  

                       print("res");

输出的结果是小数部分将会被舍去;

float res4 =3+3.4;不会报错

int res4 =3+3.4; 会报错

多个数据类型一起运算,返回的结果的数据类型是数据类型大的;

2.求余

3.+  可以链接两个字符串;

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.bool类型

2字符类型和字符串类型

char c =‘c’;

string name ="绝地求生";

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.声明整型变量

long mp =1000 ;声明完后,会在mp下面有一条波浪线,表明,这个变量从未被使用过;

2.整型

整形的类型有八种,每一种类型都有一定范围的存取空间。

3.浮点型float

float hp =3.4;会报错,因为每一个值都有一个类型,比如100,默认为整型,小数有两种类型,float类型和double类型,输入3.4,默认类型为float,要解决报错,输入时float hp =3.4f,加一个f,是说明,3.4为float类型;

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.变量声明方法

第一种:声明变量直接初始化——int a = 100;

第二种:不直接声明——int a 

                                     a=100;

 

注意:变量声明是指给一个这样类型的变量,这个变量并没有实力化,它依然是一个抽象的概念,比如声明一个int a , 在这里只是给出一个整形变量的空间,这个空间叫a,空间并不是具体存在的。没有初始化变量,不能使用,系统会出现报错;

[展开全文]
瞴眳 · 2018-11-22 · 该任务已被删除 0

1.变量:用来存取数据;

注释一段代码有一个快捷键:先Ctrl+K 后 Ctrl+C,两个两在一起按(选择或多行)。

2.变量不能以数字开头。

 

[展开全文]
瞴眳 · 2018-11-21 · 该任务已被删除 0

1.日志输出打开

在window里面,有一个Console(控制台),点击打开;

2.输出方式

print输出(只能在组建中输出),可以输出各种类型数据;

print这种方式的输出,只能在MonoBehaviour里面使用,意思时只有建立的脚本类继承了MonoBeHaviour,才能够使用。

DeBug.Log("2121")输出方式。可以在任意类类型的方法当中都可使用。

DeBug.LogError("2121");

Debug.LogWarning("2121").输出方式,与前面的不同之处在于标识的不同。

3.在日志输出中,右上角有3中标识,显示正常,警告和错误三种信息,旁边的数值代表信息条数。

 

[展开全文]
瞴眳 · 2018-11-21 · 该任务已被删除 0

1.输入法都为英文

2.单行注释: //

3.多行注释:/*  */   有一种比较方便的写法,先写/*,然后按回车键,能一致往下注释,最后结尾输入*/即可;

[展开全文]
瞴眳 · 2018-11-21 · 该任务已被删除 0

1.如果场景没有保存,那么在菜单栏上面会显示场景没有命名——Untitled(未命名);在左侧的Hierarchy面板下,有一个带有unity标志的一栏显示的是Untitled;

2.脚本名称和在编辑器中的类名要保持一致;

当在Scripts下面创建一个脚本后并命名,命名后,有对脚本名称进行修改,修改完后,运行程序,这时删掉物体身上的脚本,重新添加,发现脚本添加不了,出现报错。

原因:在开始创建脚并命名后,打开编辑器,在命名空间下有一个继承类,继承类的名称就是最开始的命名,后面重新更改脚本名称,但在编辑器中的脚本的类名并没有更改,导致报错;

3.每次在场景中添加新的物体或修改时,场景的大纲窗口中的带有unity图标的父类一项的场景名称后面会多一个星号。

在编辑器中如果文件没有保存,在菜单栏下的文件一栏中,脚本文件名后面的会带有星号,记住要常保存(Ctrl +S)。在vs中对代码多了修改,回到unity中,不会马上有反应,比如在vs中新建一个公开变量,回到unity中时,那个新建的变量不会马上出现,要等待一下。在unity的右下角有一个进度刷新的图标一直在刷新,图标消失,说明已经更新完毕;

特别情况:如果发现unity没有更新代码中的数据,那么可以试一试unity;

在读取的过程中时没办法运行游戏的。

[展开全文]
瞴眳 · 2018-11-21 · 该任务已被删除 0

授课教师

问问题加入A计划,有专门负责答疑的老师哦!!!

课程特色

下载资料(2)
视频(37)

学员动态