首页 > 其他分享 >Unity 2022.3.20f1新功能,异步实例化预制体Object.InstantiateAsync

Unity 2022.3.20f1新功能,异步实例化预制体Object.InstantiateAsync

时间:2024-02-18 16:57:15浏览次数:48  
标签:异步 instantiateOperation 20f1 Object InstantiateAsync Unity 实例 500

今天查看Unity 2022.3.20f1更新日志,发现新增了个异步实例化的功能,这个功能解决了Unity历史上实例化预制体卡顿的痛点,简直不要太爽。

具体的API文档请点击跳转。

做了个简单的实例化测试,实例化500*500个Cube,耗时9.2s。实例化过程之间不会卡顿,可以做其他事情,即便是在重度游戏加载场景过程中也不需要担心卡顿掉帧影响操作了。测试代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjTest : MonoBehaviour
{
    public GameObject obj;

    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(Test());
        Debug.LogError($"test InstantiateAsync");
    }

    IEnumerator Test()
    {
        float startTime = Time.realtimeSinceStartup;
        for (int i = 0; i < 500; i++)
        {
            AsyncInstantiateOperation<GameObject> instantiateOperation = Object.InstantiateAsync(obj, 500);
            yield return instantiateOperation;
            if (instantiateOperation.isDone)
            {
                // Debug.Log($"{instantiateOperation.Result.Length}");
                for (int j = 0; j < instantiateOperation.Result.Length; j++)
                {
                    GameObject go = instantiateOperation.Result[j];
                    go.name = $"cube{i}-{j}";
                }
            }
        }
        Debug.LogError($"spend time:{Time.realtimeSinceStartup - startTime} seconds");
    }

}

可惜当前项目没能用这个版本,不过后续新项目能用上新版本,用异步实例化绝对是爽翻天。

 

标签:异步,instantiateOperation,20f1,Object,InstantiateAsync,Unity,实例,500
From: https://www.cnblogs.com/flamesky/p/18019553

相关文章

  • Unity Scriptable Object概述
    如何理解ScriptableObjectScriptableObject是一种数据容器(datacontainer),通常被用来存储大量的数据,并且不依赖于类实例。换句话说,ScriptableObject本身就是一个存放数据的实例。ScriptableObject没有继承自MonoBehavior,而是继承自ScriptableObject,所以ScriptableObject不能......
  • C#对window 硬件类操作 ManagementObjectSearcher
    在解决方案--引用--右键--添加引用---程序集---框架---勾选System.Management 前言: 我们在很多情况下想要获得计算机的硬件或操作系统的信息,比如获得CPU序列号给自己的软件添加机器码锁绑定指定电脑。又或者想要获得硬盘分区,声卡显卡等信息。开篇:我们用到的主要类是Managem......
  • 12 - 变量与对象与object, type, class
    变量与对象参考资料:菜鸟教程:Python3基本数据类型Python文档:数据模型-对象、值与类型RealPython:Python中的变量与对象知乎:如何理解python中一切皆对象呢?看type,object,class的关系变量(variable)的赋值(assignment)与删除(deletion)Python中的变量不需要声明。每个变量在......
  • Object.assign详解(对象的浅拷贝以及合并)
    Object.assign详解 一、Object.assign是什么?首先了解下Object.assign()是什么。我们先看看ES6官方文档是怎么介绍的?Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。简单来说,就是Object.assign()是对象的静态方法,可以用......
  • 【教程】Objective-C 性能监控
     1、内存监控CPU内存监控克魔助手提供了分析内存占用、查看CPU实时活动数据以及追踪特定应用程序的功能,让开发者可以更好地了解应用程序的运行情况。以下是一些示例截图: ​    ​   ​  同样,克魔助手还提供了内存、GPU性能监控、网络监控等功......
  • PyQt5+python AttributeError: 'QMainWindow' object has no attribute 'slot1'解决办
    Step1.原因分析因为以前写过pyqt5,所以还是有一定的基础的,但是最近重新写上位机的时候,突然发现以前的办法不好用了,以前就是直接从Qtdesigner创建完成后,使用指令生成一个py文件,从main文件中调用就可以了,这次发现,直接使用槽函数,会报错AttributeError:'QMainWindow'objec......
  • ASP.NET Core中JsonResult和ObjectResult的用法
    ​  在ASP.NETCore中,JsonResult和ObjectResult是两种用于返回数据的ActionResult类型,它们在控制器中用来生成HTTP响应。选择使用JsonResult还是ObjectResult取决于具体需求。如只需要返回JSON格式的数据,JsonResult是一个简单且直接的选择。如果API需要支持多种响应格式,则Obje......
  • mysql: error while loading shared libraries: libncurses.so.6: cannot open shared
    查找没有libncurses.so.5,可能有libncurses.so不同版本的文件,使用命令find/-name'libncurses*'复制+覆盖软链接先复制到lib64文件夹,再用软链接重新覆盖一下[root@lab-aliyunwzx]#cp/home/wll/miniconda3/lib/libncurses.so.6/lib64[root@lab-aliyunwzx]#cd/lib6......
  • Active Directory Group Policy Objects | 活动目录组策略对象 | 介绍 | 配置
    介绍ActiveDirectory(AD)的组策略对象(GroupPolicyObjects,简称GPO),在Windows环境中使用GPO来配置、管理和强制执行网络中的计算机和用户设置。组策略对象(GPO)是策略设置的虚拟集合,GPO具有唯一的名称,例如GUID。组策略设置包含在GPO中,GPO可以表示文档系统和ActiveDirectory......
  • 【侯捷C++面向对象笔记】补充4-object model
    关键词:虚函数表,动态绑定,多态每个对象都维护自己的虚表指针,指向类的虚函数表。(所以对象的size比其包含的所有数据size多4,即虚指针大小)➡️动态绑定:(多态的实现原理)通过指针p找到对象c的vptr通过vptr找到classC的vtbl在vtbl中找到第n个虚函数并调用➡️子类调用父类函数隐......