贝博恩创新科技网

Unity 3D场景设计实例教程怎么学?

  1. 项目初始化与场景搭建
  2. 地形系统:创建基础世界
  3. 光照与后处理:营造氛围
  4. 材质与纹理:赋予世界色彩与质感
  5. 粒子特效与音效:增强沉浸感
  6. 交互元素:可破坏的箱子
  7. 场景优化:提升性能
  8. 最终呈现与总结

准备工作

  1. 安装 Unity Hub 和 Unity 编辑器:建议使用 LTS (Long-Term Support) 版本,如 2025.3.x 或 2025.3.x。
  2. 创建新项目:打开 Unity Hub,创建一个 3D (Core) 模板的新项目。
  3. 导入必要的资源包
    • Standard Assets:在 Unity 的 Package Manager 中找到并导入 "Standard Assets" 包,它包含我们需要的控制器、动画和音效。
    • Terrain Tools:Unity 自带,无需额外导入。
    • 一些免费资源:可以从 Unity Asset StoreOpenGameArt.org 下载一些免费的地形纹理、模型、粒子特效和音效,找一个简单的木箱模型和一些破坏特效。

实例教程:第三人称跑酷场景

第一步:项目初始化与场景搭建

  1. 创建地面

    Unity 3D场景设计实例教程怎么学?-图1
    (图片来源网络,侵删)
    • 在 Hierarchy 窗口中,右键 -> 3D Object -> Plane,将其重命名为 Ground,并调整其 Scale (Y=0.1, Z=0.1) 使其扁平化。
    • 创建一个 Cube,将其作为平台,放置在 Ground 上方,调整其位置和大小,作为第一个跳跃平台。
  2. 设置玩家

    • 在 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 放置在第一个平台上方。
  3. 添加玩家控制器

    • 在 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 对象上。

你可以在 Play 模式下使用 WASD 移动,空格键 跳跃了!


第二步:地形系统:创建基础世界

Unity 的地形工具非常适合创建自然地貌。

Unity 3D场景设计实例教程怎么学?-图2
(图片来源网络,侵删)
  1. 创建地形

    • 在 Hierarchy 中,右键 -> 3D Object -> Terrain,将其重命名为 MainTerrain
    • 选中 MainTerrain,你会看到 Terrain 组件。
  2. 绘制地形

    • 高度图:在 Terrain 组件的工具栏中,点击 Terrain (小山峰图标) -> Set Height,使用画笔工具,在场景中绘制起伏的山丘和山谷。
    • 纹理:点击 Paint Texture (油漆桶图标),在弹出的窗口中,点击 "Add..." 导入你准备好的地形纹理(如草地、石头、泥土),选择一种纹理,然后使用画笔在地形上绘制,你可以设置不同的纹理作为“平滑度”和“目标强度”,让过渡更自然。
    • 树木与植被:点击 Place Trees (树木图标),同样可以导入你自己的树或草的模型包,然后像贴纸一样“刷”在地形上。
  3. 搭建跑酷路径

    • 使用 CubeCylinder (旋转后作为柱子)、Capsule 等基本几何体,结合地形,搭建出一条连贯的跑酷路径,可以高低错落,增加挑战性。
    • 将这些平台组织成一个空对象 Obstacles 下,方便管理。

第三步:光照与后处理:营造氛围

光和影是场景的灵魂。

Unity 3D场景设计实例教程怎么学?-图3
(图片来源网络,侵删)
  1. 设置主光源

    • 场景中默认有一个 Directional Light,这是模拟太阳的光源。
    • 调整它的 Rotation,让光从侧面或背面照射过来,产生漂亮的轮廓光。
    • 调整 Intensity (强度) 和 Color (颜色),使用偏暖的黄色调 (1.5, 1.3, 1.0) 可以营造黄昏或清晨的感觉。
  2. 添加环境光

    • 点击菜单栏 Window -> Rendering -> Lighting Settings
    • 在 Lighting 窗口中,找到 Environment 标签页。
    • Skybox:可以选择一个内置的 Skybox,或者创建你自己的天空盒材质。
    • Ambient Source:设置为 Skybox,这样环境光会自动从天空盒获取颜色,使阴影区域不会死黑。
  3. 使用后处理效果

    • 后处理效果能让画面看起来更专业,最简单的方法是使用 Post-process LayerPost-process Volume
    • 在 Hierarchy 中创建一个空对象,命名为 Post-process Volume
    • 为其添加 Post-process Layer 组件,在 Layer 字段中输入 "Default"。
    • 再为其添加 Post-process Volume 组件。
    • 勾选 Is Global,使其影响整个场景。
    • 点击 New 创建一个配置文件,然后点击 fx (Effects) 按钮。
    • 尝试调整以下效果:
      • Bloom (泛光):让高光部分(如水面、金属)产生光晕,增加梦幻感。
      • Color Grading (色彩分级):可以整体调整画面的色调、对比度和饱和度,快速统一风格。
      • Vignette (暗角):让画面边缘变暗,突出中心,增加电影感。

第四步:材质与纹理:赋予世界色彩与质感

  1. 创建材质

    • 在 Project 窗口中,右键 -> Create -> Material
    • 将其重命名为 Wood_Material
  2. 设置材质属性

    • 选中 Wood_Material,在 Inspector 窗口中:
      • Shader:选择一个合适的着色器,如 Standard (高光) 或 Standard (金属)。
      • Albedo:这是颜色贴图,点击它,选择你的木箱纹理。
      • Normal Map:法线贴图,可以增加表面的凹凸细节,让木头看起来更有纹理感。
      • Metallic:金属度,对于木头,设置为 0。
      • Smoothness:光滑度,设置为 0.2 左右,让木头看起来粗糙。
  3. 应用材质

    • 将创建好的 Wood_Material 拖拽到场景中的所有木箱模型上。

为地面、平台、石头等其他物体也重复此过程,创建并应用不同的材质。


第五步:粒子特效与音效:增强沉浸感

  1. 添加粒子特效 (瀑布)

    • 在 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: 选择一个半透明的粒子纹理。
  2. 添加音效

    • 导入你准备好的音效文件(如脚步声、背景音乐、瀑布声)到 Project 窗口中。
    • 创建一个空对象,命名为 AudioManager
    • 为其添加 Audio Source 组件。
    • 将背景音乐拖拽到 AudioClip 字段中。
    • 勾选 Play on AwakeLoop
    • 调整 Volume
    • 为脚步声创建另一个 Audio Source,但不要勾选 Play on Awake,然后在 PlayerController 脚本中添加播放脚步声的逻辑。

第六步:交互元素:可破坏的箱子

让场景“活”起来。

  1. 创建脚本

    • 创建一个新的 C# 脚本,命名为 BreakableBox
  2. 编写逻辑

    • 双击脚本,用以下代码替换内容:
    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);
        }
    }
  3. 准备预制体

    • 在场景中创建一个破碎的箱子(可以是多个小碎片组合)。
    • 将其拖拽到 Project 窗口中,创建成一个 Prefab
    • 删除场景中的原始破碎箱子。
  4. 应用脚本

    • BreakableBox 脚本拖拽到场景中的某个木箱上。
    • 在 Inspector 窗口中,你会看到 Breakable Box 组件,将你刚刚创建的破碎箱子预制体拖拽到 Broken Version 字段中。
    • 确保你的 Player 对象的 Tag 设置为 "Player"。

当玩家高速撞击这个箱子时,它就会破碎成碎片!


第七步:场景优化:提升性能

一个优秀的场景必须考虑性能。

  1. 使用 Occlusion Culling (遮挡剔除):

    • 点击菜单栏 Window -> Rendering -> Occlusion Culling
    • 点击 Bake 按钮,这会计算哪些物体在当前视角下是不可见的,从而在运行时不渲染它们,极大提升性能。
  2. 静态批处理

    • 选中所有静止不动的物体(地形、平台、装饰物等)。
    • 在 Inspector 窗口底部,勾选 Static
    • 然后点击菜单栏 Edit -> Project Settings -> Player
    • 在 Other Settings 中,确保 Static Batching 是勾选的。
  3. 简化碰撞体

    • 对于一些视觉复杂但形状简单的物体(如装饰性的石头),可以为其添加一个简单的 Mesh Collider 而不是默认的 Mesh Collider (Convex),或者用多个简单的碰撞体组合来近似其形状。

第八步:最终呈现与总结

  1. 调整摄像机

    • 创建一个空的 Camera 对象,将其作为 Player 的子对象。
    • 调整摄像机的位置和角度,使其始终跟随在玩家身后,形成一个第三人称视角,可以使用 Cinemachine 包来实现更平滑、更智能的摄像机控制。
  2. 检查与调整

    • 在 Play 模式下,完整地跑一遍你的场景。
    • 检查光照是否协调,材质是否贴图正确,特效是否流畅,交互是否正常。
    • 反复调整细节,直到你满意为止。

恭喜你!通过这个实例,你已经完成了一个功能丰富、视觉效果出色的 Unity 3D 游戏场景,你学到了:

  • 场景搭建:从基本几何体到复杂地形。
  • 光照与渲染:如何使用光源和后处理来营造氛围。
  • 材质系统:如何为物体赋予逼真的外观。
  • 特效与音效:如何增强游戏的沉浸感。
  • 交互逻辑:如何让玩家与场景互动。
  • 性能优化:如何让你的场景在大多数设备上流畅运行。

这只是一个起点,游戏场景设计是一个不断学习和实践的过程,大胆尝试新的资源、新的技术(如 Shader Graph、Timeline),去创造属于你自己的独特世界吧!

分享:
扫描分享到社交APP
上一篇
下一篇