| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity API常用方法和类 -> 正文阅读 |
|
[游戏开发]Unity API常用方法和类 |
什么是API?——预先设置好的编程接口 事件函数及常用脚本事件函数的执行顺序具体可参考:docs.unity.cn/cn/current/Manual/ExecutionOrder.html *函数前加fix和不加fix的区别(如Fixupdate和update的区别):加fix后调用执行的次数固定,不会再受到电脑硬件影响。正常来说,电脑的一帧受硬件本身的影响,在0.02s左右上下浮动,update调用的次数就是0.02s左右一次,而fixupdate受客观时间影响,固定0.0166...667s执行一次 常用的事件函数Time类CaptureFrameRate????????设置帧速率并截图 deltaTime? ? ? ? 当前帧所占用时间
fixedDeltaTime? ? ? ? 固定的一帧所占用的时间 realtimeSinceStartup? ? ? ? 从游戏开始运行到现在所用时间(不受暂停等操作影响)
time? ? ? ? 游戏实际运行时间 fixedTime? ? ? ? 游戏实际运行时间,值和time接近 timeSinceLevelLoad? ? ? ? Scene在加载后游戏运行的时间,如果进入下一个scene将重新计时 frameCount? ? ? ? 帧数 timeScale? ? ? ? 让游戏暂停/加速/减速
创建游戏物体????????方法一:
? ? ? ? 方法二:
? ? ? ? 方法三:
为游戏物体添加组件
判断游戏物体是否被禁用
Unity常用类游戏——>场景——>游戏物体——>组件 一个游戏由多个场景组成 一个场景由多个游戏物体组成 一个游戏物体由多个组件组成 UnityEngine.Object(基类)——>GameObject ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——>Component UnityEngine.Object属性name? ? ? ? 返回名称 方法Destroy(); DontDestroyOnLoad();? ? ? ? 将物体从A场景带入B场景时不销毁游戏物体 FindObjectOfType<>();? ? ? ? 在游戏场景中找到第一个含有该组件物体下的第一个该组件
FindObjectsOfType<>();? ? ? ? 找到游戏场景中的所有该组件并返回一个数组
Instantiate? ? ? ? 更多参数可查找API ? ? ? ? ? ? ? ? ? ? ? ? (Object original,Vector3 position,Quaternion rotation,Transform parent); ? ? ? ? ? ? ? ? ? ? ? ? 创建的物体,位置,旋转,哪个父物体下 ? ? ? ? ? ? ? ? ? ? ? ? (Object original,Transform parent); ? ? ? ? ? ? ? ? ? ? ? ? 不指定位置旋转,放于parent下; ? ? ? ? ? ? ? ? ? ? ? ? (Object original,Transform parent,bool InstantiateInWorldSpace) ? ? ? ? ? ? ? ? ? ? ? ? 最后一个参数为是否世界坐标系,如果为True则是,False则会根据父物体的坐标位置和旋转改变自身的位置和旋转。 GameObject类与Component类中的公共方法AddComponent(); CompareTag(); SetActive(); BroadcastMessage();
SendMessage(); SendMessageUpwards();? ? ? ? 向其自身及其所有祖先发送消息 GetComponent GetComponents GetComponentInChildren GetComponentsInChildren GetComponentInParent GetComponentsInParent GameObject类属性activeHierachy activeSelf
layer scene tag 方法CreatePrimitive(); Find();? ? ? ? 根据名字查找物体
FindGameObjectWithTag? ? ? ? 根据标签,查找到第一个游戏物体 FindGameObjectsWithTag????????根据标签,查找所有游戏物体
Component类——>MonoBehaviour类属性isActiveAndEnabled? ? ? ? 判断组件是否激活 enabled? ? ? ? 激活/禁用 tag gameObject? ? ? ? 当前游戏物体 transform name 方法print();? ? ? ? 静态方法,输出日志 Invoke("xxx",int x);? ? ? ? 调用某方法,在x秒后(x这个参数可以不写) CancelInvoke("xxx")? ? ? ? 取消Invoke,如不指定参数则取消所有Invoke InvokeRepeating? ? ? ? 重复调用
IsInvoking? ? ? ? 判断某方法是否正在调用
StartCoroutine
StopAllCoroutines StopCoroutine("xxx");? ? ? ? 停止一个指定的协程 注意:StartCoroutine 与 StopCoroutine 调用的参数需相同 如字符串则同为字符串,如为IEnumerator则同为IEnumerator
Mouse相关方法可搜索API OnMouseXXX 注意:如果物体标记为Trigger,则保证physics窗口中QueriesHitTriggers勾选 Mathf类静态变量PI Deg2Rad? ? ? ? 度数变为弧度 Rad2Deg? ? ? ? 弧度变为度数 Epsilon? ? ? ? 最小单位小数 ? ? ? ? 任意值+Epsilon=任意值本身 ? ? ? ? 任意值-Epsilon=值本身 ? ? ? ? 0+Epsilon=0 ? ? ? ? 0-Epsilon=0 Infinity? ? ? ? 无穷大 NegativeInfinity? ? ? ? 无穷小 静态方法Abs? ? ? ? 绝对值 Ceil? ? ? ? 向上取整,返回float CeilToInt? ? ? ? 向上取整,返回Int Clamp(float value,float min,float max);? ? ? ? 将值限定在一个范围内 ? ? ? ? value<min? ? ? ? 返回min ? ? ? ? value>max? ? ? ? 返回max ? ? ? ? min<value<max? ? ? ? 返回value
Clamp01(float value)? ? ? ? 将min设置为0,max设置为1 ClosetPowerOfTwo(int value)? ? ? ? 取得和value最近的2的次方数 DeltaAngle(float current,float target)? ? ? ? 计算两角度间的最小距离 Exp(float power)? ? ? ? e^power次方 Floor(float f)? ? ? ? 向下取整,返回float FloorToInt(float f)? ? ? ? 向下取整,返回int Max? ? ? ? 返回一个最大值 Min? ? ? ? 返回一个最小值 Pow(float f,float p);? ? ? ? f^p次方 Sqrt(float f)? ? ? ? 根号f Lerp(float a,float b,float t) 0<=t<=1,通过系数t取a与b之间的值,t=0时返回a,t=1时返回b
MoveTowards(float current,float target,float maxDelta);? ? ? ? 与Lerp相似,但是为匀速,即每次current+maxDelta,但小于target
PingPong(float t,float length);? ? ? ? 在0~length之间来回变化,t为系数控制来回 0<=t<=length时? ? ? ? 返回t length<t<=2*length? ? ? ? 返回2*length-t ... 形成往复
Random类属性Value? ? ? ? 0.0~1.0之间的随机值 state? ? ? ? 随机数种子 rotation? ? ? ? 四元数随机值 insideUnitCircle? ? ? ? 在一个物体附近单位圆范围内随机生成一个三维position insideUnitSphere? ? ? ? 在一个物体附近单位球体范围内随机生成一个三维position 方法Range()? ? ? ? Random.Range(4,10)随机生成4~9之间的数 InitState(int seed)? ? ? ? 初始化随机数种子 Quaternion类? ? ? ? 四元数输出旋转角
赋值
获取四元数的欧拉角
创建一个由A望向B的四元数方向
Lerp & Slerp(一般多用Slerp) 由当前旋转转到目标旋转
Input类属性anyKey? ? ? ? 任意键 anyKeyDown? ? ? ? 任意键按下后 mousePosition? ? ? ? 返回鼠标在屏幕上的位置 方法GetKeyXXX? ? ? ? 监听键盘事件? ? ? ? 具体方法见API文档 ? ? ? ? GetKey 有哪些键盘事件可在API中搜索:Conventional Game Input GetMouseXXX? ? ? ? 监听鼠标事件? ? ? ? 具体方法见API文档 GetButtonDown("XXX")? ? ? ? 其中,XXX为虚拟按钮,可在InputManager(Edit->Project Settings-> Input)窗口查看有哪些虚拟按键并设置 GetAxis("XXX")? ? ? ? 返回一个虚拟按键输入后的渐变值
?GetAxisRaw("XXX")? ? ? ? 返回一个虚拟按键输入后的确定值(如a就为-1,d就为1) Vector2 结构体(Vector3 类似不重复)属性x y
magnitude? ? ? ? 长度 ?normalized? ? ? ? 单位化 sqrMagnitude? ? ? ? 未开根的长度 关于Vector2值的修改:
方法Normalize();? ? ? ? 单位化 更多见API Rigidbody类属性centerOfMass? ? ? ? 取得中心点 position? ? ? ? 位置,性能比Transform.position好 rotation? ? ? ? 旋转,性能比Transform.rotation好 更多见API 方法MovePosition? ? ? ? 移动会更加平滑
AddForce(Vector3)? ? ? ? 施加力 Camera类main? ? ? ? 获取mainCamera
鼠标发射射线,检测鼠标是否停留在物体上
Application类属性datapath? ? ? ?路径,Assets文件夹 persistentDataPath???????? streamingAssetsPath? ? ? ? 资源文件,U3D内命名为StreamingAssets的文件夹不会被编译,会原样输出至打包目录 temporaryCachePath? ? ? ? 临时目录 方法Application.OpenURL()? ? ? ? 打开网络 Application.Quit()? ? ? ? 退出 Application.CaptureScreenShot()? ? ? ? 路径名 SceneManager类属性sceneCount? ? ? ? 场景总数量 方法LoadScene()? ? ? ? 加载场景
GetActiveScene()? ? ? ? 得到当前场景 LoadSceneAsync()? ? ? ? 异步加载 GetSceneAt()? ? ? ? 获取已加载的场景信息 射线检测Physics.Raycast Physics.RaycastAll? ? ? ? 射线会穿透检测所有的物体 检测正前方是否有敌人
UGUI方法实现事件监听的三个方法: 1.直接拖拽脚本 2.代码添加
3.接口实现
WWW类载入网络图片,见API Touches类? ? ? ? 触摸检测见API,建议使用easyTouch插件做触摸检测 Camera类属性main? ? ? ? 得到main camera 方法ScreenPointToRay()? ? ? ? 将一个屏幕坐标转换为射线
Character Controller类属性bool isGrounded? ? ? ? 判断是否在地面上 方法OnControllerColliderHit? ? ? ? 返回碰撞到的collider,会自动多次调用 SimpleMove? ? ? ? 控制移动 控制移动
Mesh类
Material类
Animator类speed? ? ? ? 设置状态机速度 GetCurrentAnimatorClipInfo? ? ? ? 获取当前状态 AudioSource类
粒子系统
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 11:45:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |