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

完成于2017-11-06

价格 免费

transform指当前游戏物体

[展开全文]
CoffeeSpot · 2021-11-03 · 该任务已被删除 0

取反:!,针对bool

!ture是false

[展开全文]
CoffeeSpot · 2021-11-02 · 该任务已被删除 0

监视器中可看到的变量的值若与脚本不同,以监视器定义的为准

GameObject是一个定义游戏物体的类,可以直接定义游戏物体

[展开全文]
CoffeeSpot · 2021-11-02 · 该任务已被删除 0

using是命名空间,命名空间下包含类

 

可通过namespace+命名,来定义一个命名空间

 

定义了命名空间后,就可以在其他类中调用这个命名空间下的类了。

区别之前在其他类中调用这个类下的方法,是用public+方法实现。

[展开全文]
CoffeeSpot · 2021-11-02 · 该任务已被删除 0

反复看

[展开全文]
CoffeeSpot · 2021-11-02 · 该任务已被删除 0

输出方式:

1、print

2、

[展开全文]
故人心易变 · 2021-10-28 · 该任务已被删除 0

获取GameObject的方式:

1,拖拽获取

先在字段中定义(定义成public),然后进行拖拽

字段中定义的是什么类型,那么在将GameObject拖拽之后,就会自动去查找该GameObject中的这个类型的组件进行获取

如果这个GameObject中没有这个类型的组件,那么自然在Unity中是无法拖拽过去的

2,通过transform.Find(该方法只能获取子物体)

transform.Find("GameObject (1)/GameObject")

Find函数的参数是字符串,在字符串中输入子物体的名字(路径)即可查找。如果路径不存在,会返回Null值

3,GameObject.Find("Main Camera")

会返回第一个以这个名字命名的游戏物体

但是这个方法不推荐使用,因为它需要在整个场景,在全局进行遍历、查找,因此而耗费性能

4,根据标签进行查找

GameObject.FindWithTag("Player")

通过函数参数的标签名即可查找到GameObject

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

在代码中禁用组件(只有部分组件能够禁用,会在Inspector界面有带打勾的选项,例如Rigidbody组件就没有办法禁用):

同样的,先通过代码进行组件的获取;

然后通过以下代码可以禁用组件:

组件名.enabled = false

激活同理

当然,禁用了之后,这个组件里的方法仍然可以调用,无论是内置方法还是自定义的方法

 

调用组件的内部属性:

组件名.属性

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

访问自身组件:

Transform t = GetComponent<Transform>();

实际上Transform组件是无需通过这种方式获取的,因为它是一个内置的自带的组件,这里只是举个例子

 

也可以通过这种方式获取多个组件

Collider[] colliders = GetComponents<Collider>();

再进行遍历:

foreach (Collider n in colliders){

    

}

如果只想得到多个组件中的某一个可以GetComponent<BoxCollider>()

 

GetComponent方法无论该组件有没有被禁用都是可以获得这个组件的

 

如果要获取子物体的组件,可以GetComponentInChildren<Transform>()只会返回第一个得到的组件

 

如果要获取别的GameObject的组件,需要先定义字段,然后通过拖拽赋值,再在代码中通过

类名.GetComponent<组件名>()

进行获取

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

 用foreach语句遍历数组:

foreach(类型名 t in 数组名){

 

}

t就代表数组里的每一个元素

 

 

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

 可以通过以下语句获取子物体:

Transform[] children = transform.GetComponentsInChildren<Transform>();

注意这里同样包含了当前游戏物体

如果要判断是不是当前游戏物体,可以通过以下语句实现:

(省略for循环)

children[i] == transform

 

可以通过以下语句进行GameObject的销毁(GameObject类的自带方法)

GameObject.Destroy()

 

dowhile循环:

do{

 

}

while();

这种循环类型是先do,所以至少会循环一次

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

if适用于情况少一点时

switch语法:

switch (参数){

    case 条件1:

        

          break;

    case 条件2:

        

          break;

    default:

 

          break;

}

其中default语句可添可不添

且break是一定要的

如果n个case语句挨着,比如:

case 条件1:

case 条件2:

    

      break;

则意思是,如果满足条件1或者条件2(或者更多)时,会执行下面的语句

 

switch语句的局限:switch语句只能判断是不是,不能够像if语句一样灵活地判断范围

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

枚举类型:

enum HeroType{

    Soldier,

    Master,

    Tank,

    Shooter

}

 

声明时:

HeroType heorType = HeroType.Soldier;

后续判断时:

if (heroType == HeroType.Soldier)

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

运算符分类:

1,数学运算符

2,赋值运算符

3,比较运算符

4,逻辑运算符

&& || !

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

在类中声明的public的变量可以在unity的Inspector面板中进行改变。但是Inspector面板的初始值只会是在脚本中第一次定义的时候的值,之后如果在脚本内进行值的改动是不会影响到Inspector界面的值的,且实际输出的值是以Inspector为准的

如果定义的变量为private,那么是不会在Inspector界面显示的

如果定义的时候没有声明是public还是private,那么默认是private

 

别的类型:

eg. public GameObject cameraGo;

这一行语句可以用游戏物体赋值的。但是这种拖拽赋值有个缺点,就是这些赋值的变量容易丢失。

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

脚本中上面的几个using叫做namespace

显示灰色的namespace表示没有使用,显示白色的namespace表示使用了(MonoBehaviour就在UnityEngine中使用了;如果删掉using UnityEngine,MonoBehaviour就会报错了,因为它所在的命名空间不存在,识别不出来这个类) 

 

定义namespace的方法:

namespace 命名空间名 {

    class 类名{

 

    }

}

这样的话这个被创建的类就属于这个命名空间了

那么可以在继承了MonoBehaviour的主类上通过using 命名空间名,然后就可以在主类中使用这个新定义的类去声明一些变量或对象等等

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

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

授课教师

SiKi学院老师

课程特色

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