
Unity基础
文章平均质量分 85
Unity基础知识点梳理
little_fat_sheep
图形学领域爱好者,未来将在图形渲染(OpenGL、LibGDX、Filament、Unity3D、UE)、图形编解码(FFmpeg)等领域长期深耕。
展开
-
【Unity3D】Unity与Android交互
本文主要介绍 Unity 打包发布 Android apk 流程、基于 AndroidJavaObject(或 AndroidJavaClass)实现 Unity 调用 Java 代码、基于 UnityPlayer 实现 Java 调用 Unity 代码,官方介绍见→Android。原创 2023-10-24 23:35:59 · 6025 阅读 · 6 评论 -
【Unity3D】资源管理
Unity 中资源管理方案主要有 Resources、TextAsset、ScriptableObject 、AssetDatabase、PlayerPrefs、Addressables、AssetBundle、SQLite,本文将介绍其中大部分方案。原创 2023-09-14 23:53:45 · 2418 阅读 · 1 评论 -
【Unity3D】UI Toolkit数据动态绑定
本文将实现 cvs 表格数据与 UI Toolkit 元素的动态绑定。如果读者对 UI Toolkit 不是太了解,可以参考以下内容。UI Toolkit简介UI Toolkit容器UI Toolkit元素UI Toolkit样式选择器UI Toolkit自定义元素// 便于在UI Builder中导入自定义UI, 需要有无参构造函数// 模板容器// 角色属性。原创 2023-09-12 17:06:26 · 2499 阅读 · 1 评论 -
【Unity3D】UI Toolkit自定义元素
UI Toolkit 支持通过继承 VisualElement 实现自定义元素,便于通过脚本控制元素。另外,UI Toolkit 也支持将一个容器及其所有子元素作为一个模板,便于通过脚本复制模板。如果读者对 UI Toolkit 不是太了解,可以参考以下内容。UI Toolkit简介UI Toolkit容器UI Toolkit元素UI Toolkit样式选择器1)UI 搭建。原创 2023-09-10 16:49:43 · 1596 阅读 · 0 评论 -
【Unity3D】UI Toolkit样式选择器
UI Toolkit简介中介绍了样式属性,本文将介绍样式选择器(Selector),主要包含样式类选择器(Class Selector)、C#类选择器(Type Selector)、名称选择器(Name Selector)、通用选择器(Universal Selector)、后代选择器(Descendant Selector)、子选择器(Child Selector)、多重选择器(Multiple Selector)、伪类选择器(Pseudo Class)等。样式选择器官方介绍见→。原创 2023-09-05 23:36:52 · 2477 阅读 · 0 评论 -
【Unity3D】UI Toolkit元素
UI Toolkit简介 中介绍了 UI Builder、样式属性、UQuery、Debugger,UI Toolkit容器中介绍了 VisualElement、ScrollView、ListView、GroupBox 等容器,UI Toolkit样式选择器中介绍了简单选择器、复杂选择器、伪类选择器等样式选择器,本文将介绍 UI Toolkit 中的元素,主要包含 Label、Button、TextField、Toggle、Radio Button、Slider、Progress Bar、Drop原创 2023-09-04 14:18:56 · 3390 阅读 · 0 评论 -
【Unity3D】UI Toolkit容器
UI Toolkit简介中介绍了 UI Builder、样式属性、UQuery、Debugger,UI Toolkit元素中介绍Label、Button、TextField、Toggle、Radio Button、Slider、Progress Bar、Dropdown、Foldout 等元素,UI Toolkit样式选择器中介绍了简单选择器、复杂选择器、伪类选择器等样式选择器,本文将介绍 UI Toolkit 中的容器,主要包含 VisualElement、ScrollView、ListVie原创 2023-09-01 23:04:59 · 3539 阅读 · 0 评论 -
【Unity3D】UI Toolkit简介
UI Toolkit 是一种基于 Web 技术的 GUI 框架,是为了解决 UGUI 效率问题而设计的新一代 UI 系统(UGUI 的介绍详见→UGUI概述)。与 UGUI 不同,UI Toolkit 没有采用 GameObject 的方式,而是参考了 Web 技术的 XML 和 CSS 方案。这意味着它只保存变化的数据,而不是整个界面状态,这使得它具有更高的效率。UI Toolkit 的历史可以追溯到 Unity 2018 年发布的 UIElement,起初主要用于 Editor原创 2023-08-30 17:30:07 · 10413 阅读 · 3 评论 -
【Unity3D】Cesium加载大地图
Cesium 是一个地球可视化平台和工具链,具有数据切片、数据分发、三维可视等功能。Cesium 支持 JS、Unity、Unreal、O3DE、Omniverse 等平台,框架如下。https://www.cesiumlab.com/CesiumLab地理信息基础数据处理平台使用手册.pdf。原创 2023-07-20 22:08:03 · 4705 阅读 · 4 评论 -
【Unity3D】立方体纹理(Cubemap)和天空盒子(Skybox)
立方体纹理是指由上、下、左、右、前、后 6 张纹理组成的立方体结构纹理,其主要用于天空盒子、环境映射、反射、折射等场景。天空盒子用于渲染场景背景,需要将相机的Clear Flags属性设置为Skybox才能使用天空盒子。原创 2023-05-21 16:20:26 · 4250 阅读 · 0 评论 -
【Unity3D】绘制物体外框线条盒子
MeshFilter、Render、Collider 获取的 Bounds 区别如下:MeshFilter Bounds:模型原始 mesh 的 Bounds(局部坐标系下的坐标),在 Transform 组件中修改缩放,不会影响其值大小,还原其真实渲染值大小需要通过transform.TransformPoint(vertex) 变换还原;Renderer Bounds:模型渲染的真实 Bounds,其姿态与世界坐标系的坐标轴朝向保持一致,在 Transform 组件中修改缩放,会影响其值大小;原创 2023-01-14 15:35:43 · 4541 阅读 · 2 评论 -
【Unity3D】点选物体、框选物体、绘制外边框
点选物体:点击物体,可以选中物体,按住 Ctrl 追加选中,选中的物体设置为红色。框选物体:拖拽鼠标,屏幕上会出现滑动框,滑动框内的物体会被选中,选中的物体设置为红色。绘制外边框:给选中的物体绘制外边框(选中框)。原创 2023-01-09 00:41:39 · 6136 阅读 · 0 评论 -
【Unity3D】基于AssetBundle实现资源热更新
Unity3D 本地资源一般放在 Resources 目录下,但是 Resouces 文件夹的大小不能超过 2G,使用 AssetBundle 管理资源可以解决 Resources 文件夹受限问题。AssetBundle 主要用于管理资源,配合 AssetDatabase 和 AssetImporter 可以实现资源重命名,配合 BuildPipeline 可以实现资源压缩,配合 WWW 或 UnityWebRequest 可以实现加载服务器资源。原创 2022-12-13 01:30:38 · 4613 阅读 · 3 评论 -
【Unity3D】使用GL绘制线段
Graphics Library(简称 GL),包含一系列类似 OpenGL 的 Immediate 模式的渲染指令,比 Graphic.DrawMesh() 更高效。GL 是立即执行的,如果在Update() 方法里调用,它们将在相机渲染前执行,相机渲染前会清空屏幕,GL 渲染效果将无法看到。通常 GL 用法是:在相机上挂脚本,并在 OnPostRender() 方法里执行(MonoBehaviour的生命周期)。GL 渲染的图像不需要 GameObject 承载,在 Hierarchy 窗口不会生成对象原创 2022-12-10 15:14:51 · 3090 阅读 · 1 评论 -
【Unity3D】绘制物体表面三角形网格
本文通过修改 mesh 的 indices、MeshTopology 属性,实现绘制物体表面的三角形网格。原创 2022-12-04 21:53:42 · 4276 阅读 · 3 评论 -
【Unity3D】缩放、平移、旋转场景
场景缩放、平移、旋转有两种实现方案,一种是对场景中所有物体进行同步变换,另一种方案是对相机的位置和姿态进行变换。对于方案一,如果所有物体都在同一个根对象下(其子对象或孙子对象),那么只需要对根对象施加变换就可以实现场景变换;如果有多个根对象,那就需要对所有根对象施加变换。该方案实现简单,但是会破坏场景中对象的尺寸、位置、姿态,不符合现实世界的规则。如:对场景施加缩放变换后,又新增了一个对象,但是该对象不是放在同一个根目录下,就会让用户感觉新增对象的尺寸超出意外;原创 2022-11-13 01:26:43 · 9824 阅读 · 11 评论 -
【Unity3D】Photon环境搭建
Photon 是一个泛用性的 ScoketServer 套装软件,可用于多人在线游戏、聊天室、大厅游戏,并同时支持 Windows、Unity3D、iOS、Android、Flash 等平台。Photon 包含两个部分,一部分是 Socket 服务器,另一部分是其针对各个平台编写的 SDK,Unity3D 平台对应的 SDK 为 Photon Unity Networking(PUN)。PUN 官方介绍见→PUN简介。原创 2022-09-26 23:45:48 · 4948 阅读 · 9 评论 -
【Unity3D】异步Socket通讯
同步 Socket 通讯中的 Accept、Connect、Receive 等方法会阻塞当前线程,当前线程必须等待这些方法执行完,才会继续往下执行,用户需要另开线程执行这些耗时方法,否则会阻塞主线程,导致 UI 卡顿。异步 Socket 通讯中,通过 BeginAccept、EndAccept、BeginConnect、EndConnect、BeginReceive、EndReceive 等方法实现请求、连接、收消息等效果,这些方法通过回调(Callback)的方式实现异步通讯,并且不会阻塞主线程。原创 2022-09-24 22:18:51 · 4588 阅读 · 7 评论 -
【Unity3D】同步Socket通讯
在多人对战网络游戏中,玩家之间一般不是直接通讯,而是与服务器通讯,服务器再把消息转发给其他玩家。光子引擎 Photon,其底层仍然使用 Socket 实现网络通讯。同步 Socket 是指 Socket 的部分方法会阻塞当前线程(如:Accept、Receive 方法),直到方法返回,当前线程才会继续执行。当有客户连接上服务器后,服务器会生成一个 Socket(通过 Accept 方法返回 Socket,可以理解为客服),与客户对接,进行信息交流。原创 2022-09-24 01:02:23 · 3692 阅读 · 5 评论 -
【Unity3D】协同程序
协同程序(Coroutine)简称协程,是伴随主线程一起运行的程序片段,是一个能够暂停执行的函数,用于解决程序并行问题。协程是 C# 中的概念,由于 Unity3D 的渲染操作是基于帧实现的,使用线程(Thread)不便于控制,因此 Unity3D 选择使用协程实现并发效果。协程并不是取代线程,而且抽象于线程之上。线程是系统调度的基本单位,是被分割的 CPU 资源;协程是组织好的代码流程,同一时间其实只有一个协程拥有运行权,相当于单线程的能力。协程需要线程来承载运行,线程原创 2022-09-04 00:07:33 · 4377 阅读 · 15 评论 -
【Unity3D】VideoPlayer组件
AudioSource组件中介绍了音频的播放,本文将介绍基于 VideoPlayer 组件实现视频播放。VideoPlayer 属性面板如下:Source:视频源类型,有 2 种类型:Video Clip、URL;Video Clip:视频片段:启动时播放视频;:是否在第一帧加载完成后才播放,只有在 Play On Awake 被勾选时才会生效;Loop:是否开启循环播放:播放速度。原创 2022-09-03 15:38:20 · 6144 阅读 · 6 评论 -
【Unity3D】基于粒子系统实现烟花特效
粒子系统ParticleSystem中介绍了粒子初始化、粒子发射、发射器形状、渲染器、碰撞、子发射器、拖尾等粒子系统的基本用法,本节将基于粒子系统实现烟花特效。 实现需求如下:粒子发射阶段,只有一个粒子(记为 Spindle 粒子系统),其速度递减,颜色随机,有拖尾特效;粒子上升阶段,在 Spindle 周围有环绕的粒子(记为 Around 粒子系统),其速度随机,颜色随机,方向随机;爆炸阶段,粒子向四周爆炸(记为 Blast 粒子系统),其速度随机,颜色随机,有拖尾特.........原创 2022-08-29 01:43:07 · 9298 阅读 · 10 评论 -
【Unity3D】粒子系统ParticleSystem
拖尾(TrailRenderer)、线段渲染器(LineRenderer)、粒子系统(ParticleSystem)是 Unity3D 提供的三大特效,其中粒子系统的功能最为强大,特效也最炫酷,但操作也最复杂。粒子系统中,不断地有粒子生成和粒子消亡,一般而言,粒子消亡速率和生成速率保持一致(除预热阶段),使得粒子系统保持一个稳定状态。使用粒子系统,可以实现烟花、水泡、枪口火花、核弹爆炸等特效。粒子系统的使用非常灵活,主要有以下用法:控制发射器的形状(圆柱形、圆锥形、球形、圆形等)、发射.........原创 2022-08-28 22:37:41 · 20772 阅读 · 8 评论 -
【Unity3D】线段渲染器LineRenderer
LineRenderer 组件用于绘制线段,可以调整线段条数、端点坐标、颜色、宽度等属性,其属性面板如下:Materials:线段材质,最好设置为 Default-Line;:线段端点个数;:线段端点值;Width:线段宽度,可以是不等宽的;Loop:线段是否首尾相连;Color:线段颜色,可以是渐变的。............原创 2022-08-26 00:18:39 · 6161 阅读 · 2 评论 -
【Unity3D】拖尾TrailRenderer
TrailRenderer 组件用于实现拖尾效果,可以调整拖尾颜色、时长、宽度等属性,其属性面板如下:Materials:拖尾材质,最好设置为 Default-Line;Time:拖尾时长;Width:拖尾宽度,可以是不等宽的;Color:拖尾颜色,可以是渐变的;......原创 2022-08-25 00:39:24 · 6672 阅读 · 0 评论 -
【Unity3D】动态路障导航
对于动态路障游戏对象,除了要设置 Navigation Static,还需要添加 NavMeshObstacle 组件,用于标记该对象在游戏运行过程中可以动态移动,以便 Unity3D 对此对象附近的导航网格进行动态烘焙。Carve:是否开启动态烘焙导航网格(当路障移动后,是否重新烘焙该路障附近的导航网格);Move Threshold:当路障移动的距离超过此阈值时,才会触发重新烘焙该路障附近的导航网格;Time To Stationary:路障静止多长时间后才会触发重新烘焙导航网格;Carve On原创 2022-08-24 21:50:24 · 2913 阅读 · 0 评论 -
【Unity3D】分离路面导航
导航系统中介绍了导航的基本用法,但是不能解决分离路面导航问题。如下图,胶囊体需要导航到立方体位置,但是路面不连续,烘焙(Bake)导航网格后,断开处也没有导航网格,因此,胶囊体导航到分离路面边界处就会停下来。角色在分离路面边界处,存在两种行为:1. 水平跳,2. 往下跳或往上跳。Unity3D 针对这两种情况提供了对应的解决方案:水平跳:给分离路面对象勾选 Generate OffMeshLinks 属性;往下跳或往上跳。原创 2022-08-23 23:07:06 · 1890 阅读 · 1 评论 -
【Unity3D】导航系统
导航系统用于智能避障并寻找目标物体,如:王者荣耀中,当玩家跑到敌方塔的攻击范围内,敌方塔就会发射火团攻击玩家,当玩家逃跑时,火团会智能跟随玩家,其中智能跟随就使用到了导航系统。1)导航系统使用流程将地面、路障等静态对象的 Static 属性设置为 Navigation Static;在 Navigation 窗口烘焙(Bake)导航网格;给导航角色添加组件;给导航角色添加脚本组件,并在脚本组件中设置导航目标位置()。2)烘焙导航网格面板属性。原创 2022-08-21 21:28:08 · 3770 阅读 · 7 评论 -
【Unity3D】IK动画
反向运动学IK)反映的是一种由手部带到肩部的运动形式,在这个运动中,运动以手部这个自由端为起始,当手部进行运动时会自然的带动固定端肩部的运动。通常情况下(如:用手端起一个杯子),由肩部带到手部运动,而 IK 是由手部带到肩部运动,所以这种运动学称为反向运动学。IK 的例子有:手触电、被别人牵着走、开枪时手的抖动。IK 的作用主体是人体,受力来自外部,Unity3D 提供的 IK 端点有首部和足部。原创 2022-08-21 00:03:57 · 2189 阅读 · 1 评论 -
【Unity3D】灯光组件Light
在 Hierarchy 窗口右键,选择 Light,再选择具体的灯光类型,在 Inspector 窗口查看灯光组件如下:Type:灯光类型,主要有:Directional(平行光)、Spot(聚光灯)、Point(点灯光)、Area(区域光)Color:光源颜色Mode:渲染模式,取值有:Realtime(实时渲染)、Baked(灯光渲染只计算一次)Intensity:光照强度。Type:灯光类型,主要有:Directional(平行光)、Spot(聚光灯)、Point(点灯光)、Area(区域光)Col原创 2022-08-21 15:17:35 · 4600 阅读 · 2 评论 -
【Unity3D】动画混合
实现动画混合有混合树(Blend Tree)和动画图层(Layers)两种方式:混合树:将多个动画片段以位置、速度、角速度为依据经行线性混合;动画图层:每一个动画图层只对动画主体的部分进行控制,其他部分通过遮罩屏蔽,如:边走边喊动画可以划分为 2 个图层,一个图层控制步行动画,一个图层控制喊叫动画。原创 2022-08-19 01:22:08 · 5972 阅读 · 3 评论 -
【Unity3D】动画回调函数、动画事件、动画曲线
动画回调函数是指动画在开始时、执行中、结束时回调的函数,主要有:OnStateEnter、OnStateUpdate、OnStateExit、OnStateMove、OnStateIK。动画回调函数只能给特殊帧(如:首帧、尾帧)添加回调方法,不能给任意帧添加回调方法,动画事件能够做到给任意帧添加回调方法。............原创 2022-08-17 01:11:31 · 5761 阅读 · 2 评论 -
【Unity3D】AudioSource组件
1)AudioSource 与 AudioListener 简介(音频源)组件用于控制播放 AudioClip(音频片段),能够控制 2D 和 3D(距离越远,声音越小)声音播放,它一般挂在产生声源的游戏对象上。(音频监听器)组件用于监听 AudioSource 播放的音频,它一般挂在 Camera 或游戏角色上,每个场景中最多只有一个 AudioListener。AudioSource 播放音频时,会产生一个音频场,只有在音频场范围内的 AudioListener 才能监听到声音。......原创 2022-08-15 00:48:25 · 6503 阅读 · 4 评论 -
【Unity3D】人物跟随鼠标位置
选中 HumanoidIdle 指向 HumanoidRun 的连接线,在 Inspector 窗口单击 “+” 号,添加上文创建的 “Status” 变量,将条件修改为 Equals,取值修改为 1,不勾选 “Has Exit Time” 选项(允许 HumanoidIdle 动画被打断,条件满足,直接进入 HumanoidRun 动画)。在 Assets 窗口右键,依次选择【Create→AnimatorController】,创建动画控制器,并重命名为 AnimatorController。.....原创 2022-08-13 17:02:59 · 3190 阅读 · 3 评论 -
【Unity3D】人体模型及动画
2D动画中初步了解了 Animation 和 Animator,本文将进一步学习 3D 动画,并介绍 人体模型相关内容。模型制作软件主要有:3DMax、Maya,模型存储格式主要有:*.max、*.fbx、*.obj,动画存储格式:*.fbx,Unity3D 只支持 fbx 格式。.........原创 2022-08-13 02:19:18 · 15013 阅读 · 11 评论 -
【Unity3D】2D动画
在 Hierarchy 窗口选中 Sprite 游戏对象,再依次选择【Window→Animation】(或按 Ctrl + 6 快捷键),打开 Animation 窗口,如下。将第一帧和最后一帧的 Position 分别改为 (-2, 3, 2), (2, 3, -2),中间的帧不用改,会自动插值。通过 PS 软件将以下 gif 文件中的黑色背景删除,并将其中的 18 个图层分别保存为 png 格式图片。调整 samples 取值为 8..........原创 2022-08-08 02:08:16 · 8908 阅读 · 22 评论 -
【Unity3D】相机
相机用于渲染游戏对象,每个场景中可以有多个相机,每个相机独立成像,每个成像都是一个图层,最后渲染的图层在最前面显示。相机的属性面板如下设置清屏颜色,Skybox(天空盒)、SolidColor(纯色)、DepthOnly(仅深度,画中画效果)、Don'tClear(不渲染);Background清屏颜色,当ClearFlags为Skybox或SolidColor时,才有Background;剔除遮蔽,选择相机需要绘制的对象层;ProjectionDepth。............原创 2022-07-31 01:41:33 · 3248 阅读 · 5 评论 -
【Unity3D】场景切换、全屏/恢复切换、退出游戏、截屏
场景切换可以使用 SceneManager 的LoadScene 和LoadSceneAsync 方法,退出全屏可以使用 Screen 的fullScreen 属性,退出游戏可以使用 Application 的Quit 方法原创 2022-07-28 23:22:40 · 12777 阅读 · 6 评论 -
【Unity3D】角色控制器(CharacterController)
Transform组件、Rigidbody组件、CharacterController组件。Transform组件通过控制角色位置实现移动,Rogidbody组件通过控制角色速度实现移动,CharacterController组件通过控制角色速度和模拟碰撞实现移动。Transform组件和Rogidbody组件不便于控制角色爬坡和爬梯,CharacterController组件能够很方便地实现角色在各种复杂地形中运动。碰撞体组件Collider),其属性面板如下爬坡最大角度。.........原创 2022-07-27 23:54:22 · 6203 阅读 · 2 评论 -
【Unity3D】摇杆
鼠标拖拽摇杆球控制坦克移动;上下左右按键也可以控制坦克移动,并且摇杆球也同步移动;鼠标右键滑动,控制坦克转向;相机在玩家后上方的位置,始终跟随玩家,朝玩家正前方看;单击鼠标左键控制坦克发射炮弹。.........原创 2022-07-26 01:46:46 · 2909 阅读 · 5 评论