- 项目初始化与场景搭建
- 地形系统:创建基础世界
- 光照与后处理:营造氛围
- 材质与纹理:赋予世界色彩与质感
- 粒子特效与音效:增强沉浸感
- 交互元素:可破坏的箱子
- 场景优化:提升性能
- 最终呈现与总结
准备工作
- 安装 Unity Hub 和 Unity 编辑器:建议使用 LTS (Long-Term Support) 版本,如 2025.3.x 或 2025.3.x。
- 创建新项目:打开 Unity Hub,创建一个 3D (Core) 模板的新项目。
- 导入必要的资源包:
- Standard Assets:在 Unity 的 Package Manager 中找到并导入 "Standard Assets" 包,它包含我们需要的控制器、动画和音效。
- Terrain Tools:Unity 自带,无需额外导入。
- 一些免费资源:可以从 Unity Asset Store 或 OpenGameArt.org 下载一些免费的地形纹理、模型、粒子特效和音效,找一个简单的木箱模型和一些破坏特效。
实例教程:第三人称跑酷场景
第一步:项目初始化与场景搭建
-
创建地面:
(图片来源网络,侵删)- 在 Hierarchy 窗口中,右键 -> 3D Object -> Plane,将其重命名为
Ground,并调整其 Scale (Y=0.1, Z=0.1) 使其扁平化。 - 创建一个 Cube,将其作为平台,放置在
Ground上方,调整其位置和大小,作为第一个跳跃平台。
- 在 Hierarchy 窗口中,右键 -> 3D Object -> Plane,将其重命名为
-
设置玩家:
- 在 Hierarchy 中,右键 -> 3D Object -> Capsule,将其重命名为
Player。 - 在 Package Manager 中,找到并导入 "Character Controller"。
- 选中
Player,点击菜单栏的 Component -> Character Controller,你会看到它多了一个组件。 - 调整
Character Controller的属性:- Center: (0, 0.9, 0)
- Radius: 0.3
- Height: 1.8
- 将
Player放置在第一个平台上方。
- 在 Hierarchy 中,右键 -> 3D Object -> Capsule,将其重命名为
-
添加玩家控制器:
- 在 Project 窗口中,右键 -> Create -> C# Script,命名为
PlayerController。 - 双击脚本,用以下代码替换内容:
using UnityEngine; public class PlayerController : MonoBehaviour { public float speed = 6.0f; public float jumpSpeed = 8.0f; public float gravity = 20.0f; private Vector3 moveDirection = Vector3.zero; private CharacterController controller; void Start() { controller = GetComponent<CharacterController>(); } void Update() { if (controller.isGrounded) { // We are grounded, so recalculate move direction based on axes float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); moveDirection = new Vector3(horizontal, 0, vertical); moveDirection *= speed; if (Input.GetButton("Jump")) { moveDirection.y = jumpSpeed; } } // Apply gravity moveDirection.y -= gravity * Time.deltaTime; // Move the controller controller.Move(moveDirection * Time.deltaTime); } }- 将
PlayerController脚本拖拽到 Hierarchy 中的Player对象上。
- 在 Project 窗口中,右键 -> Create -> C# Script,命名为
你可以在 Play 模式下使用 WASD 移动,空格键 跳跃了!
第二步:地形系统:创建基础世界
Unity 的地形工具非常适合创建自然地貌。

-
创建地形:
- 在 Hierarchy 中,右键 -> 3D Object -> Terrain,将其重命名为
MainTerrain。 - 选中
MainTerrain,你会看到 Terrain 组件。
- 在 Hierarchy 中,右键 -> 3D Object -> Terrain,将其重命名为
-
绘制地形:
- 高度图:在 Terrain 组件的工具栏中,点击 Terrain (小山峰图标) -> Set Height,使用画笔工具,在场景中绘制起伏的山丘和山谷。
- 纹理:点击 Paint Texture (油漆桶图标),在弹出的窗口中,点击 "Add..." 导入你准备好的地形纹理(如草地、石头、泥土),选择一种纹理,然后使用画笔在地形上绘制,你可以设置不同的纹理作为“平滑度”和“目标强度”,让过渡更自然。
- 树木与植被:点击 Place Trees (树木图标),同样可以导入你自己的树或草的模型包,然后像贴纸一样“刷”在地形上。
-
搭建跑酷路径:
- 使用 Cube、Cylinder (旋转后作为柱子)、Capsule 等基本几何体,结合地形,搭建出一条连贯的跑酷路径,可以高低错落,增加挑战性。
- 将这些平台组织成一个空对象
Obstacles下,方便管理。
第三步:光照与后处理:营造氛围
光和影是场景的灵魂。

-
设置主光源:
- 场景中默认有一个 Directional Light,这是模拟太阳的光源。
- 调整它的 Rotation,让光从侧面或背面照射过来,产生漂亮的轮廓光。
- 调整 Intensity (强度) 和 Color (颜色),使用偏暖的黄色调 (1.5, 1.3, 1.0) 可以营造黄昏或清晨的感觉。
-
添加环境光:
- 点击菜单栏 Window -> Rendering -> Lighting Settings。
- 在 Lighting 窗口中,找到 Environment 标签页。
- Skybox:可以选择一个内置的 Skybox,或者创建你自己的天空盒材质。
- Ambient Source:设置为 Skybox,这样环境光会自动从天空盒获取颜色,使阴影区域不会死黑。
-
使用后处理效果:
- 后处理效果能让画面看起来更专业,最简单的方法是使用 Post-process Layer 和 Post-process Volume。
- 在 Hierarchy 中创建一个空对象,命名为
Post-process Volume。 - 为其添加 Post-process Layer 组件,在 Layer 字段中输入 "Default"。
- 再为其添加 Post-process Volume 组件。
- 勾选 Is Global,使其影响整个场景。
- 点击 New 创建一个配置文件,然后点击
fx(Effects) 按钮。 - 尝试调整以下效果:
- Bloom (泛光):让高光部分(如水面、金属)产生光晕,增加梦幻感。
- Color Grading (色彩分级):可以整体调整画面的色调、对比度和饱和度,快速统一风格。
- Vignette (暗角):让画面边缘变暗,突出中心,增加电影感。
第四步:材质与纹理:赋予世界色彩与质感
-
创建材质:
- 在 Project 窗口中,右键 -> Create -> Material。
- 将其重命名为
Wood_Material。
-
设置材质属性:
- 选中
Wood_Material,在 Inspector 窗口中:- Shader:选择一个合适的着色器,如 Standard (高光) 或 Standard (金属)。
- Albedo:这是颜色贴图,点击它,选择你的木箱纹理。
- Normal Map:法线贴图,可以增加表面的凹凸细节,让木头看起来更有纹理感。
- Metallic:金属度,对于木头,设置为 0。
- Smoothness:光滑度,设置为 0.2 左右,让木头看起来粗糙。
- 选中
-
应用材质:
- 将创建好的
Wood_Material拖拽到场景中的所有木箱模型上。
- 将创建好的
为地面、平台、石头等其他物体也重复此过程,创建并应用不同的材质。
第五步:粒子特效与音效:增强沉浸感
-
添加粒子特效 (瀑布):
- 在 Hierarchy 中,创建一个空对象作为瀑布的父对象,命名为
Waterfall。 - 在
Waterfall下方创建一个 Cube 作为水源,调整大小和位置。 - 为
Waterfall对象添加 Particle System 组件。 - 调整粒子系统参数:
- Main:
- Duration: 设置为 -1 (持续播放)。
- Looping: 勾选。
- Start Lifetime: 3-5 秒。
- Start Speed: 2-5。
- Start Size: 0.1-0.2。
- Gravity Modifier: -0.1 (模拟水向上喷射)。
- Emission:
设置 Rate over Time 为一个常数,如 50。
- Shape:
- 选择 Cone,并调整角度,使其像瀑布一样散开。
- Renderer:
- Material: 创建一个新的材质,使用 "Particles/Standard Unlit" 着色器,并选择一个水滴或蓝色的纹理。
- Texture: 选择一个半透明的粒子纹理。
- Main:
- 在 Hierarchy 中,创建一个空对象作为瀑布的父对象,命名为
-
添加音效:
- 导入你准备好的音效文件(如脚步声、背景音乐、瀑布声)到 Project 窗口中。
- 创建一个空对象,命名为
AudioManager。 - 为其添加 Audio Source 组件。
- 将背景音乐拖拽到 AudioClip 字段中。
- 勾选 Play on Awake 和 Loop。
- 调整 Volume。
- 为脚步声创建另一个 Audio Source,但不要勾选 Play on Awake,然后在
PlayerController脚本中添加播放脚步声的逻辑。
第六步:交互元素:可破坏的箱子
让场景“活”起来。
-
创建脚本:
- 创建一个新的 C# 脚本,命名为
BreakableBox。
- 创建一个新的 C# 脚本,命名为
-
编写逻辑:
- 双击脚本,用以下代码替换内容:
using UnityEngine; public class BreakableBox : MonoBehaviour { public GameObject brokenVersion; // 拖入你准备好的破碎箱子预制体 public float breakForce = 10f; private void OnCollisionEnter(Collision collision) { // 检查碰撞是否来自玩家且速度足够快 if (collision.gameObject.CompareTag("Player") && collision.relativeVelocity.magnitude > breakForce) { Break(); } } void Break() { // 实例化破碎版本 if (brokenVersion != null) { Instantiate(brokenVersion, transform.position, transform.rotation); } // 播放破坏音效 // GetComponent<AudioSource>().Play(); // 销毁自身 Destroy(gameObject); } } -
准备预制体:
- 在场景中创建一个破碎的箱子(可以是多个小碎片组合)。
- 将其拖拽到 Project 窗口中,创建成一个 Prefab。
- 删除场景中的原始破碎箱子。
-
应用脚本:
- 将
BreakableBox脚本拖拽到场景中的某个木箱上。 - 在 Inspector 窗口中,你会看到
Breakable Box组件,将你刚刚创建的破碎箱子预制体拖拽到 Broken Version 字段中。 - 确保你的
Player对象的 Tag 设置为 "Player"。
- 将
当玩家高速撞击这个箱子时,它就会破碎成碎片!
第七步:场景优化:提升性能
一个优秀的场景必须考虑性能。
-
使用 Occlusion Culling (遮挡剔除):
- 点击菜单栏 Window -> Rendering -> Occlusion Culling。
- 点击 Bake 按钮,这会计算哪些物体在当前视角下是不可见的,从而在运行时不渲染它们,极大提升性能。
-
静态批处理:
- 选中所有静止不动的物体(地形、平台、装饰物等)。
- 在 Inspector 窗口底部,勾选 Static。
- 然后点击菜单栏 Edit -> Project Settings -> Player。
- 在 Other Settings 中,确保 Static Batching 是勾选的。
-
简化碰撞体:
- 对于一些视觉复杂但形状简单的物体(如装饰性的石头),可以为其添加一个简单的 Mesh Collider 而不是默认的 Mesh Collider (Convex),或者用多个简单的碰撞体组合来近似其形状。
第八步:最终呈现与总结
-
调整摄像机:
- 创建一个空的 Camera 对象,将其作为
Player的子对象。 - 调整摄像机的位置和角度,使其始终跟随在玩家身后,形成一个第三人称视角,可以使用 Cinemachine 包来实现更平滑、更智能的摄像机控制。
- 创建一个空的 Camera 对象,将其作为
-
检查与调整:
- 在 Play 模式下,完整地跑一遍你的场景。
- 检查光照是否协调,材质是否贴图正确,特效是否流畅,交互是否正常。
- 反复调整细节,直到你满意为止。
恭喜你!通过这个实例,你已经完成了一个功能丰富、视觉效果出色的 Unity 3D 游戏场景,你学到了:
- 场景搭建:从基本几何体到复杂地形。
- 光照与渲染:如何使用光源和后处理来营造氛围。
- 材质系统:如何为物体赋予逼真的外观。
- 特效与音效:如何增强游戏的沉浸感。
- 交互逻辑:如何让玩家与场景互动。
- 性能优化:如何让你的场景在大多数设备上流畅运行。
这只是一个起点,游戏场景设计是一个不断学习和实践的过程,大胆尝试新的资源、新的技术(如 Shader Graph、Timeline),去创造属于你自己的独特世界吧!
