29784人加入学习
(126人评价)
Unity API常用方法和类详细讲解(基于Unity5.6)
价格 免费
承诺服务

Mathf.floor:向下取整

Mathf.sqrt:取得平方根

Mathf.Pow(f,p):取得f的p次方 

 

[展开全文]
富有诗意的男网名分 · 2018-12-17 · 该任务已被删除 0

Abs:取绝对值

Ceil:向上取整

Mathf.Clamp(属性值,min,max);

比min小,就取min

bimax大,就取max

介于两者之间就取value

 

[展开全文]
富有诗意的男网名分 · 2018-12-16 · 该任务已被删除 0

Mathf.Deg2Rad:弧度转角度

Mathf.Rad2Deg:角度转弧度 

Mathf.PI;代表Π

 Mathf.NegativeInfinity:负的无限小的数

Mathf.Epsilon:代表是一个无限小的数字

Mathf.Infinity:代表是一个无限大的数字

[展开全文]
富有诗意的男网名分 · 2018-12-16 · 该任务已被删除 0

协程的开启和停止

StartCoroutine();

StopCoroutine();

实现有两种方式:

一种是写方法名

一种是创建一个IEnumerator对象,然后将对象传入方法种。

[展开全文]
富有诗意的男网名分 · 2018-12-16 · 该任务已被删除 0

差值变化方法(变化效果平滑) :

Lerp(现在的状态,目标状态,每次状态转变的距离);

[展开全文]
富有诗意的男网名分 · 2018-12-16 · 该任务已被删除 0

普通方法和协程方法:

普通方法:自上而下的运行,当方法被调用的时候,会暂停当前的程序,先执行完调用的方法,然后继续执行程序。

 

协程方法:被调用的方法和程序共同执行,并且协程方法还可以控制自己的运行时间。

 协程方法的格式:

1 定义协程方法:

IEnumerator 方法名()

{

方法体;

yield return null;

}

 

2 协程方法的调用:

StartCoroutine(协程方法());

 

 

[展开全文]
富有诗意的男网名分 · 2018-12-16 · 该任务已被删除 0

Invoke就是将方法放在队列中,等待在设置的时间进行调用

Invoke("方法名",延时调用的时间);

 CancelInvoke("方法名 ");//从等待队列去除Attack方法。如果括号中不写方法名,则去除所有的方法

InvokeRepeating("方法名",time1,time2);

time1:代表多少秒后开始调用

time2:代表多少秒调用一次

[展开全文]
富有诗意的男网名分 · 2018-12-16 · 该任务已被删除 0

游戏物体设置状态时:gameobjedt.SetActive(true/false);

组件设置状态时 component.enable = true/false;

[展开全文]
富有诗意的男网名分 · 2018-12-15 · 该任务已被删除 0

可以通过游戏物体直接获得身上的游戏物体身上的组件,也可以利用游戏物体身上的组件获得其他的组件

[展开全文]
富有诗意的男网名分 · 2018-12-15 · 该任务已被删除 0

15.MonoBehaviour

1.在ScriptingAPI中快速搜索

在搜索时,快速搜索的方法是输入搜索类的前几个单词即可。

MonoBehaviour继承Behaivour,Behaviour继承Component。

MonoBehaviour间接继承Component,

2.MonoBehaviour内容

2.1  Variable

runInEditMode——编辑器模式下操作;

useGUILayout——(不常用)

2.2  Invoke

Concel Invoke——取消调用方法

Invoke——调用方法

InvokeRepeating——

isInvoking——

3.静态方法

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

13.游戏物体间消息的发送和接收

1.PublicFunction

1.1BroadcastMessage(广播消息,即调用一个方法),——调用一个游戏物体和它所有的子物体上的方法;

问:为什么不直接去调用一个方法呢?

因为直接调用某个方法,我们必须那个这个方法脚本组件的引用,然后在去调用,拿到引用还需要通过其的方式,有些情况下,可能拿不到引用。通过广播方式,发出一个消息,看看场景中的游戏物体是否有对应的函数,可以调用。通过广播的方式,可以减少游戏的偶合性,即A引用B,B引用C,C引用A,这样一个方法改变,其他的都会跟着改变,很是复杂。

1.2SendMessage——调用当前物体上的方法;如果当前物体上有多个脚本,只要脚本中有这个方法名,都能被调用。

1.3 SendMessageUpwards——调用当前物体和当前物体的父物体上的方法。、

注意:通过发送消息的方法去调用信息,只要对应物体上脚本组件中,有这个方法名的都可以调用。

例如:

A脚本中发送广播调用B脚本中的方法

A脚本:

public GameObject target;

target.BraodCastMessage("Attack",null,SendMessageOptions.DontRequireReceiver);

//注意BroadClassMessage这个方法如果的一个参数是函数名,第二个参数是调用方法参数,第三个参数广播的消息是否一定需要接受者,需要——RequireReceiver,如果没有出现接受者,那么会出现报错,DontRequireReceiver,不一定需要接受者,这样不会出现报错。

B脚本中:

添加一个在脚本类中添加一个函数方法;

void Attack(){

      print(this.GameObject+“:攻击它”);

}

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

12.GameObject独有的静态方法

1.GameObject的静态方法

CratePrimitive——创建初始几何体;

Find——通过名称来查找; 和FindGameObjectWithTag相同;

FindGameObjectsWithTag——通过标签来查找,这个方法是查找是这个标签的所用游戏物体,返回的是一个数组。

FindWithTag——通过标签来查找,这个方法只会返回第一个符合条件的;

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

11.UnityEngine下Object拥有的静态方法

1.什么是静态方法

public class per{

public static String GetType(){

          return("人类");

      }

}

如果是静态方法,可以这样引用

String type = per.GetType();

如果不是静态方法,这样引用是错误的,需要:

per p = per.GetType();

或者:per p;

String type = p.GetType(); 

静态方法的创建需要在方法前加一个static,静态方法和静态变量一样,属于类本身,不属于那个类的对象,它不像非静态方法一样,通过类对象调用。简单来说,静态方法不需要重新建立一个实力化的类变量,然后在通过这个类,来应用类中的方法,这种是非静态方法。

2.Object中共有属性

2.1name

GameObject go;

Debug.Log(go.name);

Debug.Log(go.transform.name);

2.2 静态方法

2.2.1 Destroy:

2.2.2DestroyImmediate:

两者的区别在于使用Destroy方法,可以使物体销毁,即移除游戏物体,组件,或者资源。但是这个游戏物体依然暂时存在场景中,就像我问平时删除文件,文件只是暂时性的存放在回收站中,

DestoryImmediate:相当于强制性删除,可能导致空运行帧。不经过回收站这一步。一般情况下,使用Destroy即可;

Destory的使用方法

Destory(gameobject);

Destory(this);

Destory(rigidbody);

Destory(gameobject,5);

void Update(){

   if(GetComponent<FooScript>())

       {

          Destroy(GetComponent<FooScript>());

        }

}

2.2.3  DontDestroyOnLoad()

一般情况下,一个游戏物体在从场景A切换到场景B中,要被销毁,使用这个函数节点,可以使A场景中的游戏物体不被消费,保留到B场景中。

void Awake(){

             DontDestoryOnLoad(transform.gameobject);

 

}

2.24FindObjectOfType和FindObjectsOfType

Light light = FindObjectOfType<Light>();

light.enabled = false;

还有在VS编译器中输入Find,会出现很多参考方法的选项,将鼠标悬停在那些方法上面,发现出现一些提示,内容中如果有否决的,说明这中方法在老版本中有,先在的版本弃用。

FindObjectsType<Transform>();  //场景中多个同类型物体时,可以通过这个函数调用。

Transform[] ts= FindObjectOfType<Transform>();//此函数不查找被禁用的对象。

foreach(Transform t in ts)

{

      Debug.Log(t);  //直接输出对象时,其实输出的是对象的一些属性,名字,类型等。

}

2.2.5 Instantiate

 

 

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

Find方法:根据游戏物体的名字查找,由于该方法是查找场景中所有的游戏物体,所以十分消耗性能,谨慎使用

FindWithTag:根据标签查找游戏物体(推荐使用)

 FindGameObjectsWithTag:根据标签查找多个游戏物体,使用游戏物体数组接收。

[展开全文]
富有诗意的男网名分 · 2018-12-11 · 该任务已被删除 0

10.GameObject,Component 和Object的关系

 

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

Destory可以销毁游戏物体或组件

 Object.DontDestroyOnLoad:多用于场景切换的时候,不想销毁的游戏物体,可以不销毁,带到下一个场景中去 (也就是说用来设置一些共享的游戏物体)

[展开全文]
富有诗意的男网名分 · 2018-12-11 · 该任务已被删除 0

09.如何禁用和启动一个游戏物体

1.游戏物体上的属性

transform:场景中的游戏物体中有一个组件是不能被移除的,那个物体时transform组件。每个游戏物体上都有一个transform组件;

tag:通过tag去区分一个游戏物体。

ActiveInHierarchy:这个物体在场景中是否被激活。如果一个游戏物体父物体被禁止激活状态,父物体的ActiveInHierarchy为false,子物体也会被禁用,它的ActiveInHierarchy也为false,在inspector面板中,它的ActiveSelf为true;

ActiveSelf:游戏物体自身的状态;

注意:一个游戏物体被禁用后,各种属性还是可以获取到的,只是它不在场景当中显示出来,它的脚本方法不在执行,不耗费性能,但是他们占用内存。

 

 

 

 

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

08.如何为游戏物体通过代码添加组件

GameObject go = CreatePrimitive(PrimitiveType.Plane);

go.AddComponent<Rigidbody>();

go.AddComponent<API02>();

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

07.创建游戏物体的三种方法

1.方法一:

New GameObject("cube");

GameObject go = new GameObject("Cube"); //new 是构建,构建出来的GameObject是一个空物体;

2.方法二

根据Prefab或者另外一个游戏物体实力化的。可以把场景中的Object做成Prefab。

GameObject.Instantiate(Prefab);//可以更加prefab和另外一个游戏物体克隆;

3。方法3

GameObject.CreatePrimitive(PrimitiveType.Plane)//创建一个初始的游戏物体,克隆出来了物体默认位置是原点位置。

 

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

1.游戏物体位移的方法

Translate(),方法是Transform中的方法,需要先定义一个Transform类型的变量,然后才能够使用此方法;

比如:Transform cube;

cube.translat(vector.Forward*Time.deltaTime);这样才能让物体运行的速度保持在1m/s;

2.测试两个方法是否耗性能

使用RealtimeSinceStartup;测试一个方法运算所消耗的时间。

int RunCount = 10000;

float time1=time.realtimeSinceStartup;

for(int i=0,i<=runcout;i++)

{

      Method1();

}

 

 

 

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

授课教师

SiKi学院老师

课程特色

图文(1)
下载资料(2)
视频(71)