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

SceneManager的其他方法

SM.sceneCount 场景总数量。

SM.sceneCountBuildSettings.在BuildSettings下

createScene.创建Scene

SM.GetActiveScene(); 

返回Scene.对象

可以获得Scene.buildindex

Scene.isDirty

Scene.IsLoaded

Scene.name

Scene.path

Scene.path

Scene.rootCount

SceneManager.GetRootGameObject

SM.GetSceneAt(index);

SM.SetAcitveScene设置场景。打开

SM.OnSceneChange(方法)+

SM.ONSceneChangeLoaded(方法);

已经加载过的场景。

 

 

 

 

[展开全文]

切换加载场景。

之前

Application.LevelLoad(1);弃用了。

SceneManager.LoadScene(1);

UnityEngine.SceneManagent;

LoadSceneMode .Single,

Additive 当前场景保留,

加载慢的时候,可以异步加载

LoadSceneAsync ,返回下面的这个AsyncOperation

AsyncOpenation 可以显示加载进度条。

AsyncOpenation.progess.进度比例。

AsyncOpenation.isDone.

 

[展开全文]

Application 常用静态变量和方法

和plyaerSetting相关

Application.CompanyName 公司名字,

App.  ProductName 产品名字

App.identifier  包名,包的一个路径。Android

App.installerName安装名字, 就是ProductName

App.installMode 安装模式当前运行在哪里运行折的。Store.在线商店,Developer Build,build出来的。Enterprise企业发布,Editor在编辑器模式运行的。

App.isEditor 当前是否在编辑器下

App.IsFocused当前是否处于焦点。

App.IsMobilePlatform 当前是否在移动平台运行

App.isPlaying 是否正在播放。

App.platform 返回当前运行的平台。

App.InstanllerName 打包名

App.runInBackground 是否可以在后台运行。可以在windows下运行。

unityVersion unity版本

Version 当前正在开发的版本

bundle identifier 不可以重复。

上面为属性,接下来开始方法

Application.OpenURL

打开一个网站

Application.Quit退出游戏

Applicatoin.CatureScreenshot("完整路径+图片名") 屏幕截图

WebPalyer网页上。

如何在编辑器下退出 。 Application.IsPlaying = false  这个没用了。

UnityEditor.EditorApplication.isPlaying = false.

[展开全文]

通过Application获取Datapath.

datapath 

数据路径。不同平台不同

使用文件操作

 

音频,视频,assetbundle。

都不会进行合并

pc平台,

Application.datapath+"StreamingAssets"

 android路径。路径需要处理对。

Application.datapath 工程路径

Application.StreamingAssetsPath 流路径

Application.persistenDataPath 实例化数据

Appliacation.temproaryCachePath 临时缓冲数据

后两个是系统临时文件。

 

[展开全文]

Camera类

鼠标点转换成射线

上传的时候好好看看。。。。

Camera.main 只要标签不变就可以获得到。

Ray ray =Camera.main.ScreenPointToRay(Input.MousePosition)

RaycastHit hit;

if (Physics.Raycast(ray,out hit)

{

hit.collider

}

Debug.DrawRay(方向,距离,颜色) Scene场景下观看

background.color

 

 

[展开全文]

AddRorce 

汽车走,给汽车施加力

rgb.AddForce(方向*force )不用添加Time.deltaTime.

[展开全文]

通过刚体进行物理旋转。

可以通过刚体对物体位置和旋转进行更改,

都会更加节约动作。

MovePosition 涉及到持续改变位置用这个

Rgb.position. 一次的话就用这个。

MoveRotation 涉及到持续旋转的话就用这个

rgb.rotation 一次旋转的话就用这个。

如果物体有刚体的话,运动方法最好都由刚体调用方法来进行。

[展开全文]

rigibody position 和MovePosition 

控制角色移动。继承自component

centerofmass 重心

freezeRotation 冻结

Rigibody.position 设置位置,改变运动,性能更高。

如果会倒的化可以通过冻结x轴和z轴的旋转轴来控制。

使用刚体移动的话推荐使用MovePosition方法。会考虑插值,更加平滑。

Rgb.MovePosition(位置);

 

[展开全文]

Quaternion 中的lerp 和Slerp,

lerp可以更快的到达目标。

Slerp 和角度有关的都希望以s打头。

Slerp和角度插值有关。和位置有关的就用Lerp

和旋转有关的就用Slerp

V3 dir = enemy.positoin - player.position;

dir.y = 0;

Quaternion target = Quaternion.LookRotation(dir);

Player.rotation = Quaternion.Slerp(Player.position,target,TIme.deltaTime); 头转向。

 

 

[展开全文]

四元数和欧拉角的区别

Quaternion 结构体

学习方法

不会去操作轴 ,x,y,z,w

cube.eulerAngles = new V3(1,1,1);

cube.rotation = Quaternion.Euler(1,1,1);

cube.localeulerAngles 当有父子关系时。用这个。

cube.rotation 分局部和世界 四元数。

 

[展开全文]

其他随机方法

Random.ColorHsv 随机得到一个颜色。

Random.Value.  生成0到1之间的一个值,包括0到1.

Random.state 获取当前种子。

Random.Roation 旋转。随机得到一个朝向。

Random.InsideUnitCIrcle(单位为1的一个坐标,在园内随机生成位置)。在x,y平面上随机生成。

Random.insideUnitSphere(单位为1的一个坐标,在球里随机生成位置),3维坐标。

 

 

 

[展开全文]

使用Random生成随机数。

Random.Range();传小数和整数

Random.Range(4,10);  输出4到9 不包含最大值。

Random.Range(4,5f);不包含5.不包含最大值。

Random.InitState   初始化。种种子, 

Start 里调用下面

Random.InitState(0);  伪随机数,种了种子之后,每次生成的随机数 数值和顺序都是一样的。

 

使随机数生成的一样。默认保证种子不一样。

 Random.InitState( (int)System.DataTIme.Now.Ticks)  当下的时间。 

[展开全文]

向量的加减乘除操作

减,得到一个向量,两个点,

要得到从玩家望向敌人的向量,需要敌人位置点,减去玩家的。

加,做一个平行四边行,对角线ji'shi了之后的长度。

 

 

 

[展开全文]

Vector3.

一个向量,一个坐标代表

up.down,forward.back,left,right,one,zero

Vector.Cross 叉乘  计算两个向量的垂直向量

Lerp,

Lerp.UnClamped

Normalize()

Vector3.OrthNormalize (ref Vector3 normal, ref Vector3 tangent))  标准化 tangent。 标准化 tangent 并确保其与 normal 正交(即它们之间的角度为 90 度)。

Vector3.Project 做投影,一个向量在另一个方向上的投影。

Vecrot3.Reflect 反射。 InNormal 镜子,

Vector3.Scale 点乘

vector3.Slerp(a,b,float t)进行插值,不同点是两个向量,不是两个坐标。角度和长度一起。

Slerp(转角度) 先快后慢,

SlerpUnClamped.

 

 

[展开全文]

测试Vector2 的额静态方法使用。向量是从0,0开始的。

Vector2 a = new Vector2(2,2);

b,  (3,4)

c,(3,0)

Vecotr2.Angle();求两个向量之间的夹角度数

Vector2.ClampMagnitude(c,2);限定最大长度。Vector2.DIstance(b,c);  两个向量之间的距离。

Vector2.Lerp(a,b,比例);  

Vector2.LefpUnClamped  不设限的插值

Vector2.Max  长度大的

Vector2.Min   长度小的

Vector2.MoveTowards(a,b,距离);

Vector2.PingPong(当前数值,阈值); 也是相当于在两个点之间进行来回移动。

[展开全文]

Vector2 中的静态方法

Equals(new Vector2)

normalized 是不对自身产生影响,返回一个单位化后的向量。

Normalize()方法,自身单位化,对自身产生影响。

Vector2.Set(x,y);

Vector2 a = new Vector2(x,y);

a.Normalize();

a.normalized.

静态方法

Angle 取得两个向量的夹角。

ClampMagntude (Vector2 voctor,float maxLength) 夹紧,限定某个值。

限定Vecotr的长度,如果超过了最大长度,就返回最大长度,如果小就返回自身。

Distance(Vecotr2 a,Vecotr2 b),取的两个点的长度。a指向b。

Dot 点乘

Lerp,插值。对a的x和y一起进行插值。

UnClampLerp 。可能不受限制的插值。变得比目标点大。

Vector2.Max( a ,b )返回两个向量之间长度大的。

Vector2.Min(a,b)返回两个向量之间长度小的。

Vecotr2.MoveToWards(current,target,maxdistance)

Vector2.Scale 向量两个相乘。

3D数学。

[展开全文]

 

向量是结构体

Vector2 是一个struct

Monobehaviour 是类,  Vector2 是结构体。

结构体修改的时候要一起修改。。。里面的内容。。需要进行整体修改。。

[展开全文]

Vector2 变量。二位向量和坐标

down(0,-1),up(0,1),lef(-1,0)t,right(1.0),zero,one

magnitude 取得向量的长度。

normalized 对向量进行单位化,方向保持不变,长度变为1.

sqrmagnitude 长度的平方。减少性能消耗

Vector2 a = new Vector2(2,2);

a[0],a[1]

this[int] this[0]代表x,this[1]代表y

a.normalized 对a不产生影响,只是返回一个单位化之后的向量。

[展开全文]

屏幕坐标系和鼠标坐标系。

GetTouch ()触摸  EasyTouch插件。

acceleration 重力,

gyro 陀螺仪

AnyKeyDown 任何键。

Input.AnyKeyDown 返回bool,包括鼠标,键盘。

Input.MousePosition  鼠标在屏幕上的一个位置。 

左下(0,0,0)右上(屏幕最大值) 

Ray ray = Camera.main.ScreenPointToRay(Input.MousePosition);

 

 

 

[展开全文]

授课教师

SiKi学院老师

课程特色

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