2.导入资源和模拟需求

  1. 2.导入资源和模拟需求
    1. 2.1 知识点
      1. 概述
      2. 导入模型与动画
      3. 创建 Animator Controller
      4. 准备 Resources 预制体
      5. 编写脚本批量实例化
      6. 观察性能指标

2.导入资源和模拟需求


2.1 知识点

概述

本节的目标是将角色资源导入到一个内置渲染管线工程中,并通过脚本在场景中批量实例化大量角色,构建一个高压力的测试场景。后续关于 GPU InstancingVAT 等优化效果,都会以该场景的性能数据作为对比基线。

导入模型与动画

  • 创建工程并导入资源
    创建一个使用内置渲染管线的空工程,将提供的角色模型和动画资源导入到 Assets 目录下,并按项目习惯整理好子目录结构。
  • 检查模型导入选项
    选中角色模型,在 InspectorModel 面板中启用与动画相关的选项,例如 Import BlendShapesImport Visibility 等,以避免播放动画时出现表情不更新或部件缺失的问题。
  • 确认动画片段设置
    Animations 目录中找到待机动画(如 Ice_Idle),勾选 Loop Time 以启用循环播放,这样角色在场景中会保持稳定的待机动作,而不会只播放一次后停在中间帧。

创建 Animator Controller

  1. Assets/Resources/Anim(目录可根据项目规范调整,这里放在 Resources 下便于后续加载)中新建一个 Animator Controller,例如命名为 Hero_Ice_Body.controller
  2. 双击打开该控制器,在 Animator 面板中将 Ice_Idle 拖入 Base Layer,并设置为默认状态。角色身上挂载该控制器后,进入场景会自动播放待机动画。

准备 Resources 预制体

  • 在场景中拖入角色模型,将组件中的 Animator.Controller 指向刚刚创建的 Hero_Ice_Body.controller
  • 调整角色的缩放、朝向和初始位置,运行场景确认待机动画能够稳定循环播放。
  • 将调整好的角色拖拽到 Assets/Resources/Prefabs(或项目约定的 Prefabs 目录)中,生成一个预制体,例如命名为 TestObj,后续批量实例化将统一使用该预制体。

编写脚本批量实例化

下面通过一个简单的脚本,在场景中按网格方式实例化大量角色,形成典型的「海量同类角色 + 同步动画」压测场景。

using UnityEngine;

public class CreateObject : MonoBehaviour
{
    // 角色预制体
    public GameObject obj;

    // X、Z 方向的实例数量
    public int x = 100;
    public int y = 100;
    
    void Start()
    {
        // 统一父节点,便于在层级视图中管理
        GameObject father = new GameObject("ObjectFather");

        for (int i = 0; i < x; i++)
        {
            for (int j = 0; j < y; j++)
            {
                GameObject co = Instantiate(obj, father.transform);
                co.transform.position = new Vector3(i, 0, j);
            }
        }
    }
}
  • 将该脚本挂在场景中的一个空物体上,在 Inspector 中将 obj 指向上一步生成的 TestObj 预制体。
  • 运行场景后,可以看到大量角色按网格分布在地面上,并同时播放待机动画,便于后续进行渲染统计和性能对比。

观察性能指标

  • Game 视图中打开 Stats 面板,可以观察当前的 BatchesSetPass CallsTriangles 等统计信息,此时数值会明显偏高,FPS 也会有较大幅度下降。
  • 打开 Profiler,切换到 GPURendering 模块,可以看到渲染线程以及动画相关的开销处于高负载状态。
  • 在保持相同角色数量和场景结构的前提下,后续章节将引入 GPU InstancingVAT 等手段,对比并逐步压缩 DrawCall 和渲染开销。本节构建的场景,即为这些优化实验的初始基线。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏