unity常用API
2021-04-11 14:05:04 0 举报
AI智能生成
unity常见API
作者其他创作
大纲/内容
结构体
Vector2
Static Properties
down
下(0,-1)
up
上(0,1)
left
左(-1,0)
right
右(1,0)
one
(1,1)
zero
(0,0)
Properties
magnitude
返回值是取向量的长度
normalized
返回值是把对象单位化(不对自身产生影响)
sqrMagnitude
返回值是向量长度的平方
this[0]/x
x值
this[1]/y
y值
public Methods
public bool Equals(object other);
比较两个向量是否相等
public void Normalize();
把自身单位化
public void Set(float newX, float newY);
对自身的x,y进行赋值
public string ToString();
转化为字符串
Static Methods
public static float Angle(Vector2 from, Vector2 to);
返回两个向量的夹角
public static Vector2 ClampMagnitude(Vector2 vector, float maxLength);
当向量的长度小于maxlength返回自身,当向量的长度大于maxlength就将向量的长度变为maxlength在返回
public static float Distance(Vector2 a, Vector2 b);
取得a点到b点的长度
public static float Dot(Vector2 lhs, Vector2 rhs);
两个向量的点积。
public static Vector2 Lerp(Vector2 a, Vector2 b, float t);
插值运算(返回值为a+|b-a|*t)a和b都是向量所以就是分别对ab的x和对ab的y分别进行插值运算
public static Vector2 Max(Vector2 lhs, Vector2 rhs);
返回由两个向量的最大分量组成的向量。
public static Vector2 Min(Vector2 lhs, Vector2 rhs);
返回由两个向量的最小分量组成的向量。
public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta);
将current以maxDistanceDelta速度变化到target
public static Vector2 Scale(Vector2 a, Vector2 b);
将两个矢量按分量相乘。
Vector3
Quaternion(四元数)
Static Methods
public static Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up);
得到和Forward一样的朝向
public static Quaternion Lerp(Quaternion a, Quaternion b, float t);
插值运算,效果不好,但是快
public static Quaternion SLerp(Quaternion a, Quaternion b, float t);
插值运算,效果好,稍慢(角度旋转推荐)
Random
Static Properties
public static float value;
随机生成0到1之间的小数(包含0和1)
public static Random.State state;
获取当前的状态及种子
设置回某一状态(种子)就会按照之前的序列进行继续生成。
public static Quaternion rotation;
随机的到朝向值
public static Vector2 insideUnitCircle;
在二维的单位圆内进行随机的生成(x,y)
public static Vector3 insideUnitSphere;
在三维的单位圆内进行随机的生成(x,y,z)
Static Methods
public static float Range(float min, float max);
public static int Range(int min, int max);
public static int Range(int min, int max);
生成随机数(伪随机数)(整数时不包含最大值)
public static void InitState(int seed);
随机数种子的初始化(进行初始化后,可以保证每次生成的随机数序列不会一样)
public static Color ColorHSV();
随机生成颜色
public static float Range(float min, float max);
public static int Range(int min, int max);
public static int Range(int min, int max);
Camera
Static Properties
main
第一个启用的摄像头标记为“MainCamera”(只读)。
public Methods
public Ray ScreenPointToRay(Vector3 pos);
public Ray ScreenPointToRay(Vector3 pos, Camera.MonoOrStereoscopicEye eye);
public Ray ScreenPointToRay(Vector3 pos, Camera.MonoOrStereoscopicEye eye);
返回从摄影机穿过屏幕点的光线。
Application
Static Properties
public static string dataPath;
包含目标设备上游戏数据文件夹(工程)的路径(只读)。(移动端没有访问权限)
public static string streamingAssetsPath;
获取StreamingAssets(文件流,音频,视频,图片等)的路径
public static string persistentDataPath;
可以进行实列化的数据文件路径
public static string temporaryCachePath;
临时缓冲数据的文件路径
public static string companyName;
获取公司名字
public static string productName;
产品名字
public static string installerName;
返回安装应用程序的存储或包(安装包)的名称(只读)
public static ApplicationInstallMode installMode;
返回安装模式
ApplicationInstallMode
Unknown
未知安装模式
Store
通过在线商店安装的应用程序
DeveloperBuild
通过开发人员内部版本安装的应用程序
Adhoc
通过临时分发安装的应用程序
Enterprise
通过企业发行版安装的应用程序
Editor
应用程序在编辑器中运行
public static bool isEditor;
是否在编辑模式下运行
public static bool isFocused;
是否在焦点模式下(当在运行时鼠标在geme上就是在焦点上)
public static bool isMobilePlatform;
是否在移动平台(pc,ios,Android)上运行
public static bool isPlaying;
是否在编辑模式下播放及运行
public static RuntimePlatform platform;
当前的运行环境
public static bool runInBackground;
是否可以在后台运行
public static string unityVersion;
unity当前的版本
Static Methods
public static void OpenURL(string url);
打开url网页
public static void Quit();
退出游戏(编辑器模式下不行)
public static void CaptureScreenshot(string filename);
截屏(已过时)
public static void LoadLevel();
加载场景(过时)
ScreenCapture
Static Methods
public static void CaptureScreenshot(string filename, int superSize);
将路径名下的屏幕截图捕获为PNG文件。
public static Texture2D CaptureScreenshotAsTexture(int superSize);
将游戏视图的屏幕截图捕获到Texture2D对象中。
public static void CaptureScreenshotIntoRenderTexture(RenderTexture renderTexture);
将游戏视图的屏幕截图捕获到RenderTexture对象中。
SceneManager
Static Properties
public static int sceneCount;
当前加载的场景总数。
public static int sceneCountInBuildSettings;
构建设置中的场景数。
Static Methods
public static void LoadScene(string sceneName/int sceneBuildIndex, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
通过其名称或在“构建设置”中的索引加载场景。
public static AsyncOperation LoadSceneAsync(string sceneName, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
后台异步加载
AsyncOperation
public float progress;
加载进度,当progress等于1时加载完毕,并赋值给isDone
public int priority;
优先级使您可以调整异步操作调用的执行顺序。
public bool isDone;
加载完成了吗?(只读)
public bool allowSceneActivation;
准备就绪后,立即激活场景。
System.IO
Directory
Static Properties
localFolder
返回本地文件夹的路径。
roamingFolder
返回漫游文件夹的路径。
temporaryFolder
返回临时文件夹的路径。
Static Methods
public static void CreateDirectory(string path);
在指定路径下创建目录
public static void Delete(string path);
从指定路径中删除目录
public static bool Exists(string path);
确定指定路径是否存在
public static void Move(string sourceDirName,string destDirName);
移动目录
public static string[] GetDirectories(string path);
获取当前目录下的所有子目录
public static string[] GetFiles(string path);
获取指定目录下的所有文件
DirectoryInfo.Atttributes
设置文件夹的属性
File和FileStream
File
Static Methods
public static void Delete(string path);
删除指定的文件
public static bool Exists(string path);
确定指定文件是否存在
public static FileStream Open(string path,FileMode mode)
打开文件
public static FileStream Create(string path;)
创建文件
public static void Copy(string sourceFileName,string destFileName,bool overwrite);
复制文件
public static void Move(string sourceFileName,string destFileName);
移动文件
public static void SetAttributes(string path,FileAttributes fileAttributes);
设置文件属性
path
public Methods
Combine(string, string);
连接两个路径字符串
文件操作
Resources
注意
Resources类只能读取名为“Resources”的文件夹里的资源,注意是复数形式。
Resources文件夹需要用户自己新建,可以放在Asset文件夹里任意层级的子目录中,若在不同目录下有多个“Resources”文件夹,加载某个指定资源时每一个“Resources”文件夹都会被检查。因此建议项目中只创建一个名为“Resources”的文件夹,且放在Asset文件夹的根目录下。
Unity打包发布时,只有Resources文件夹里的资源在会被打入包中。
Resources类加载资源时,使用”Resources”文件夹开始的相对路径,且不包含资源的扩展名。
static Methods
public static T Load(string path);
T是请求的数据文件类型
ublic static void UnloadAsset(Object assetToUnload);
卸载内存中资源
ublic static void UnloadUnsedAsset(Object assetToUnload);
卸载未使用的资源
EventSystems
JsonUtility
Input(输入)
Static Properties
public static bool anyKey;
任何按键按住都返回true
bool anyKeyDown;
任何按键按下都返回true
public static Vector3 mousePosition;
获取鼠标在屏幕上的位置(像素位置)
Static Methods
Key(按键)
GetKeyDown(KeyCode key/String name);
按下
GetKey(KeyCode key/String name);
按住
GetKeyUp(KeyCode key/String name);
抬起
keysname
Mouse(鼠标)
GetMouseDown(int button);
按下
GetMouse(int button);
按住
GetMouseUp(int button);
抬起
Button
GetButtonDown(string buttonName);
按下
GetButton(string buttonName);
按住
GetButtonUp(string buttonName);
抬起
public static Touch GetTouch(int index);
手指触摸
Mathf(数学函数)
Static Properties
PI
圆周率(本身是准确的)
Deg2Rad
角度转换为弧度乘上它
Rad2Deg
弧度转换为角度乘上它
Epsilon
非常小的小数,无线接近于零,并且大于零
Infinity
无限大的数字
Negativeinfinity
无限小的数字
Static Methods
Abs();
取绝对值
Ceil(float f));
向上取整数,返回值是Float类型
CeilToInt(float f));
向上取整数,返回值是Int类型
Floor(float f);
向下取整数,返回值是Float类型
FloorToInt(float f);
向下取整数,返回值是Int类型
Clamp(float value,float min,float max);
当value小于min时返回min、当value大于max时返回max、否则就是返回value
Clamp01(float value);
把value的值限定在0到1之间
ClosestPowerOfTwo(Int power);
返回值为离power最近的2的n次方数
Exp(float power);
返回值为e的power次方
Pow(float f,float p);
返回f的p次方
Sqrt(float f);
返回平方根号下f
DeltaAngle(float current,float target);
取两个角度的最小夹角
lerp(float a,float b,float t);
插值运算(返回值为a+(b-a)*t)
lerpAngle(float f);
角度插值运算
Max(float a,float b);
取最大值
Min(float a,float b);
取最小值
MoveTowards(float current, float target, float maxDelta);
current当前值,target目标值,maxDelta每帧移动的距离
不会超过目标值(target)
MoveTowardsAngle(float current, float target, float maxDelta);
current当角度,target目标角度,maxDelta每帧移动的角度
不会超过目标角度(target)
PingPong(float t, float length);
当t的值在t和length+t之间时返回值就是t,当t一直增大返回值就会像一个乒乓球一样往复,一会变大,一会变下,但是都在t和length+t之间。
MonoBehaviour
Static Methods
输出
print();
只能在继承MonoBehavior的类中使用
Debug.log();
对print方法封装进Debug类中使用。
Coroutines(协程)
协程方法的定义
返回值必须是IEnumerator类型
返回参数时使用:yield return null;
yield return new WaitForSeconds(Float time);
协成方法暂停time秒后在继续执行。
开始和关闭
StopAllCoroutine();
关闭所有协程
通过方法名
StartCoroutine(String methodname);
开启methodname的协程方法
StopCoroutine(String methodname);
关闭methodname的协程方法
通过IEnumerator
StartCoroutine(IEnumerator ie);
开启ie的协程方法
StopCoroutine(IEnumerator ie);
关闭ie的协程方法
public Methods
Invoek(String methodname,float time);
调用Methodname方法一次,time秒后调用
InvokeRepeating(String methodname,float time,float repeatRate);
重复调用Methodname方法,time秒后调用,每repeatRate秒调用一次
CancelInvoke(String methodname);
当不指定名字时,取消当前脚本里面所有的Invoke调用的协成方法
当指定名字时,取消当前脚本里methodname协成方法的调用
IsInvokeing(String methodname);
判断methodname的协成是否正在被调用
Messages
Mouse
OnMouseDown();
鼠标点击
OnMouseDrag();
鼠标按下后的停留和拖拽
OnMouseUp();
鼠标抬起时
OnMouseEnter();
鼠标移上去时
OnMouseExit();
鼠标移出
OnMouseOver();
鼠标停留时
OnMouseUpAsButton();
当单击和抬起在一个物体上时触发
注意
如果Collider勾选IsTrigger,那么PhysicsManager中的Queries Hit Triggers必须是勾选的
Object
Static Properties
name
Static Methods
Destory();
销毁物体/组件、当销毁游戏物体时可以设置销毁时间。
DestoryImmediate();
立刻销毁该游戏物体。一般使用Destory。
DontDestoryOnLoad(GameObject gameobject);
场景跳转时不销毁的游戏物体
FindObjectOfType(Type type);
根据游戏物体的类型进行全局搜索,找到第一个返回,返回的对象就是查找的对象
FindObjectsOfType(Type type);
根据游戏物体的类型进行全局搜索,找到所有的游戏物体,返回的对象就是查找的对象
Instantiate(prefad/游戏物体);
克隆游戏物体(预制体)
GameObject
Static Properties
activeSelf
自身状态、当游戏物体的父对象被禁用时,他自己是没被禁用的。
activeInHierachy
是否被禁用
isStatic
是否是静态物体
layer
属于那一层
scene
获取当前的场景
tag
标签
transform
位置信息
Static Methods
CreatePrimitive();
创建基本的游戏物体clue...等等
Find(String name);
根据名字全局查找游戏对象、找到第一个返回。
比较耗费性能
FindGameObjectsWithTag(String tag);
根据tag全局查找游戏对象、返回值可以是多个。
FindWithTag(Sring tag);
FindGameObjectWithTag(String tag);
FindGameObjectWithTag(String tag);
根据tag全局查找游戏对象、找到第一个返回。
public Methods
go.AddComponent<组件>();
给游戏物体添加组件
go.CompareTag(GameObject gameobject);
比较两个游戏对象的Tag是否相同
go.SetActive(bool b);
设置游戏对象的状态
Message
go.SendMessage(String methodname);
发送消息,针对自身游戏对象上的脚本
go.SendMessageUpwards();
向上发送消息,就是自己和父对象,以及父对象的的父对象上的脚本
go.BroadcastMessage(String methodname,String value);
广播消息,自己和子物体都可以接收到
Component
public Methods
Message
go.SendMessage(String methodname);
发送消息,针对自身游戏对象上的脚本
go.SendMessageUpwards();
向上发送消息,就是自己和父对象,以及父对象的的父对象上的脚本
go.BroadcastMessage(String methodname,String value);
广播消息,自己和子物体都可以接收到
Compont
go.GetCompont();
获得go对象上的第一个组件
go.GetComponts();
获得go对象上的所有组件
go.GetCompontInChildren();
获得go对象和他所有孩子对象上的第一个组件
go.GetCompontsInChildren();
获得go对象和他所有孩子对象上的所有组件
go.GetCompontInParent();
获得go对象和他所有父对象上的第一个组件
go.GetCompontsInParent();
获得go对象和他所有孩子对象上的所有组件
Rigidbody
Properties
public bool freezeRotation;
冻结和打开旋转
public Vector3 position;
游戏对象的位置
public Quaternion rotation;
用四元数修改朝向
Public Methods
public void MovePosition(Vector3 position);
用插值的方式运动到某个位置
public void MoveRotation(Quaternion rot);
用插值(四元数)的方式对旋转到某个方向
public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force);
给游戏物体施加force力
Time
deltaTime():每帧占用的时间(不固定)
fixedDeltaTime():设置的每帧占用的时间(固定)
fixedTime():游戏从开始到现在运行的时间
realtimeSinceStartup():游戏从开始到现在的运行时间
time():游戏从开始到现在的运行时间
timeSinceLevelLoad():当前场景加载完毕到现在运行的时间
frameCount():游戏运行到现在运行的帧数
timeScale():游戏时间运行的倍数(就是可以几倍的播放游戏)
当设置为0时就可以暂停游戏,但是游戏中物体的运动必须是和Time.deltaTime相关的。
Event事件函数
事件函数
Editor
Reset():在Reset时和添加该脚本时触发。
Initialization
Awake():当场景运行起来,或者被实例化时调用
OnEnable():当游戏对象被启用时调用
Start();只调用一次
Physics
FixedUpdate():每秒调用固定的次数:60
Tring
OnTringEnter():进入时
OnTringStay():停留时
OnTringExit():退出时
Collision
OnCollisionEnter():进入时
OnCollisionStay():停留时
OnCollisionExit():退出时
yield WaitForFixedUpdate
Input events
Mouse
OnMouseUp():当鼠标从游戏对象上抬起时调用
OnMouseOver():当鼠标在游戏对象上悬停时调用
OnMouseDown():当鼠标点击游戏对象时调用
GameLogic
Update():每帧执行一次,每秒的执行次数和当时运行的FPS有关
lateUpdate():每帧执行一次,每秒的执行次数和当时运行的FPS有关
Scene rendering
Gizmo(辅助线) rendering
OnDrawGizmos
GUI rendering
OnGUI():每帧调用多次
Pausing
OnApplicationPause():当点击暂停按钮时调用
Disable/enable
OnDiasble();当游戏对象被禁用时调用
Decommissioning
OnApplicationQuit():退出游戏时调用
OnDestory():销毁游戏物体
执行时机与先后顺序
0 条评论
下一页