Vector2
Static Variables
Down (0,-1)
Left (-1,0)
Up (0,1)
Right (1,0)
One(1,1)
Zero(0,0)
Variables
magnitude:取得向量长度
sqrMagniyude:向量长度的平方
Normalized:对向量进行单位化(方向不变,长度变为一。对向量不产生影响)
X、Y:xy坐标
Public Function
Normalize:自身单位化 (会对向量产生影响)
Equal:判断两个向量是否相等
Set:对X,Y进行赋值
测试如下:
向量是结构体,是值类型,要整体赋值
Static function
Angle:两个向量夹角
ClampMagnitude:夹紧
Distance:a指向b的距离
Lerp:向量插值运算
LerpUnClamped:不做范围限制的插值运算
Max:取最大值
Min:取最小值
MoveTowards:在两向量内匀速移动
测试如下:
Vector3
Static Variables
Forward(0,0,1)
back(0,0,-1)
Down (0,-1,0)
Left (-1,0,0)
Up (0,1,0)
Right (1,0,0)
One(1,1,1)
Zero(0,0,0)
Static function
Cross:差乘 取得两向量的垂直向量
Dot:点乘
Lerp:根据位置差值运算
LerpUnClamped:不做范围限制的差值运算
Max:取最大值
Min:取最小值
MoveTowards:在两向量内匀速移动
Normalize:自身单位化
Project:一个向量在另外一个向量上的投影
Reflect:反射(沿法线反射)
Slerp:按照夹角进行插值(适合制作转向)
Operators
Operator-:向量相减
Operator+:向量相加
Operator*:向量相乘
Operator/:向量相除
Operator==:判断两个向量是否相等
测试如下:
Random
Static function
InitState:初始化状态(InitState(种子),种子决定随机生成的序列。当种子一样,生成序列也一样)(通过System.DateTime.Now.Ticks获取当前时间,作为种子,这样可使每次运行种子不同,随机生成序列也不相同)
测试如下:
ColorHSV 根据HSV和透明度进行随机生成
Range(随机生成范围,不包含最大值)
利用代码测试一下:
print(Random.Range(4,10))
Static Variables
value:0到1之间的小数,包括0和1(可用随机生成rgb值)
state:获取当前的状态(即种子,可根据种子获得一个随机序列)
rotate:用来随机得到一个四元数,可随机获得物体的旋转朝向
insideUnitCircle 半径为1的圆内随机生成一个位置,可用于在固定范围内随机生成敌人
insideUnitSphere 半径为1的球内随机生成一个位置,可用于在固定范围内随机生成敌人
可通过下面的代码测试insideUnitCircle 、insideUnitSphere
cube.position = Random.insideUnitCircle * 5;
cube.position = Random.insideUnitCircle * 5;
Rigidbody
Variables
centerOfMass:取得重心点
freezeRotation:冻结旋转
potation:通过刚体控制游戏物体旋转
addForce:用施加力的方式控制物体的移动(a=f/m 持续加速)
position:通过刚体控制位置移动(如果只是让物体从一个位置移动到另一个位置,使用position就可)
moveposition:控制物体移动(要想持续的让物体从一个位置移动到另一个位置,使用moveposition)
可用下面的代码进行简单测试(测试结果是动态的,在这就不放视频了,可以自己进行测试查看测试结果)
Camera
ScreenPointToRay 将鼠标在屏幕上的点转化为射线进行检测
可通过下面的代码进行检测
Ray ray = mainCamera.ScreenPointToRay(new Vector3(200,200,0));
Debug.DrawRay(ray.origin,ray.direction*10,Color.yellow);
Application
Static Variables
dataPath:数据路径
通过Application获取路径的方法:
print(Application.dataPath);
print(Application.streamingAssetsPath);
print(Application.persistentDataPath);
print(Application.temporaryCachePath);
companyName:公司名
productName:产品名
identifier:包名(包路径)
installerName:安装包的名字
installerMode:安装模式
isEditor:判断当前是否在编译器模式下运行
isFocused:判断是否处于焦点
isMobilePlatform:判断是否是移动平台
isPlaying:判断是否正在运行
isWebPlayer:判断是否在网页运行
platform:运行平台
runInBackground:设置产品是否可以在后台运行u
nityVersion:用来判断unity的版本
version:判断当前应用的版本
测试如下:
Static Function
OpenURL:可以打开一个网站
Quit:用来退出这个应用(在编译器模式下调用是无法退出的(isPlaying设置false可以退出))
测试代码如下:
Application.Quit();
Application.OpenURL("www.sikiedu.com");
ScreenCapture.CaptureScreenshot("游戏截图");
切换加载场景SceneManager
Static Variables
sceneCount :所有已经加载的场景
sceneCountBuildSetting:BuildSetting里面所有场景的个数
print(SceneManager.sceneCount);
print(SceneManager.sceneCountInBuildSettings);
Static Functions
将需要打包的所有场景加载到Scene In Build里面
四个创建方法:
LoadScene:
int sceneBuildIndex:Scene In Build里面的标号(索引)
sceneName:场景名字
LoadSceneMode:
LoadSceneMode.single:把当前场景销毁加载新的场景(默认为single)
LoadSceneMode.Additive:把当前场景的游戏物体保存加载下一个场景(并存)
CrateScene 创建场景
GetActiveScene 得到当前场景的信息(Index、name等)
GetSceneAt 根据index获得已经加载的场景的信息
GetSceneByBuildIndex 根据index获得Scene In Build里面其他的场景
GetSceneByName 根据场景名称获得场景的信息
GetSceneByPath 根据路径过得场景的信息
SetActiveScene 把某个场景激活,即切换场景
Events
activeSceneChanged 当我们加载新的场景的时候
sceneLoaded 有新场景加载完成的时候
sceneUnloaded 由a场景切换到b场景的时候
SceneManager.activeSceneChanged += OnActiveSceneChanged;
SceneManager.sceneLoaded += OnSceneLoaded;