首页 > 系统相关 >unity简单内存池案例

unity简单内存池案例

时间:2024-10-09 21:46:40浏览次数:10  
标签:cubeQueue GameObject void Instantiate 案例 unity 内存 cubePool public

unity简单内存池案例

  1. 组件准备
  2. 代码部分

 

1.组件准备

在unity中创建一个空白物体命名为cubepawner,并拖到主摄像机之前

 然后再创建cubepawner和cubePool脚本挂载到该物体上

 

 

再创建一个正方体,同时再创建一个空脚本,命名为cube 挂上去,并将该正方体拖入下方文件浏览器中制成预制体。代码编写完后需要将该预制体拖入各个脚本里

2.代码部分 

cubepawner脚本代码内容如下:

//持续从池子中拉取物体
public GameObject cubeobject; void Update() { //Instantiate(cubeobject,transform.position,transform.rotation); GameObject cp = cubePool._instance.Get(); cp.transform.position = transform.position; }

cubePool脚本代码内容如下:

//对象池
public GameObject cubePrefab; public static cubePool _instance; private Queue<GameObject> cubeQueue = new Queue<GameObject>(); private void Awake() { _instance = this; //池添加初始内容,初始有500个正方体在池子里 for (int i = 0; i < 500; i++) { GameObject newcubeobj = Instantiate(cubePrefab); newcubeobj.SetActive(false); cubeQueue.Enqueue(Instantiate(cubePrefab)); } } //入池 public void Return(GameObject go) { go.SetActive(false); cubeQueue.Enqueue(go); } public GameObject Get() { //出池 if (cubeQueue.Count > 0) { GameObject cubeobj = cubeQueue.Dequeue(); cubeobj.SetActive(true); return cubeobj; } GameObject newcubeobj = Instantiate(cubePrefab); return newcubeobj; }

cube脚本代码内容如下:

    void OnEnable()
    {
        //Destroy(this.gameObject,4f);
        StartCoroutine(ReturnObjectPool());
    }

    IEnumerator ReturnObjectPool()
    {
        yield return new WaitForSeconds(3);
        //返回对象池
        cubePool._instance.Return(this.gameObject);
    }
}

 

标签:cubeQueue,GameObject,void,Instantiate,案例,unity,内存,cubePool,public
From: https://www.cnblogs.com/wandn/p/18455136

相关文章

  • Unity使用DOTween实现金币飞入效果
    1publicGameObjectshowRewardPanel;2publicTextSetCoinText;3publicTextSetLevelText;//经验exp4privateintgetCoin;5privateintgetExp;6publicImagecoinImage;7publicImagetargetImage;8publicCameramainCamera;9publicTextMeshco......
  • Vue.js点餐页面完整教程:从零开始实现功能齐全的点餐系统” “轻松上手!用Vue.js打造响
    效果图:目录一、创建Vue项目二、构建基本页面结构三、使用CSS美化页面四、实现页面交互功能五、完整代码展示六、结语步骤点餐页面是餐饮类应用的重要组成部分。它不仅要美观,还需要具备良好的交互体验。今天,我们将使用Vue.js和CSS从零开始制作一个响应式点餐页面,......
  • Java对象内存图
    Java的对象内存图一、Java内存分配介绍Java虚拟机(JVM)在执行Java程序时会使用多个内存区域栈:方法运行时所进入的内存,变量也是在这里堆:new出来的东西会在这块内存中开辟空间并产生地址方法区:字节码文件加载时进入的内存(class类、main方法等)本地方法栈寄存器1.堆区(Heap......
  • 06 Java 案例
    一、买飞机票1.需求用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季,头等舱7折,经济舱6.5折,请开发程序计算出用户当前机票的优惠价。2.分析方法是否需要接收数据? 需要接收......
  • Unity ML-Agents: 革新游戏AI开发的开源工具包
    ml-agentsUnityML-Agents:革新游戏AI开发的开源工具包UnityML-Agents(MachineLearningAgents)是UnityTechnologies推出的一个开源项目,旨在将游戏和模拟环境转变为训练智能代理的平台。这个工具包为游戏开发者和AI研究人员提供了一个强大而灵活的框架,使他们能够轻松地在Un......
  • 打通前后端流程,案例解读华为云开源低代码引擎解决方案
    本文分享自华为云社区《使用场景级前端解决方案及低代码引擎,助力开发者生产效能提升》,来源:《华为云DTSE》第五期开源专刊当前前端在场景级的前端能力/物料上,业界相关内容/产品较少,并且较分散,基本无基础组件搭配,体验参差,多数专业场景能力/物料仅商用授权;对于场景的构建,开发效率与......
  • Java并发编程:深入探索与实战案例
    Java并发编程:深入探索与实战案例在当今的多核处理器时代,并发编程已成为提升应用程序性能、优化资源利用的关键技术之一。Java,作为一门广泛应用的编程语言,凭借其强大的并发处理能力,在众多编程语言中脱颖而出。本文将深入探讨Java并发编程的核心概念、常用工具及实战案例,旨在......
  • Kubernetes(K8s)技术深度解析与实战案例
    Kubernetes(K8s)技术深度解析与实战案例Kubernetes(简称K8s)已经成为当今云原生应用和微服务架构的首选平台。作为一个开源的容器编排系统,K8s用于自动化应用程序的部署、扩展和管理。本文将深入探讨K8s的架构、关键组件、设计理念以及实战应用,并通过一个具体的微服务应用部署案......
  • 上门家政系统开发、现成源码案例
    上门家政系统开发源码的详细情况会根据不同的开发团队、技术栈和项目需求而有所不同。然而,我可以提供一个大致的开发流程和涉及的技术栈,以及可能包含的功能模块,以帮助理解上门家政系统开发源码的基本结构。开发流程需求分析:明确系统的基本功能,如用户注册登录、服务项目选择、......
  • Axure大屏可视化模板在多领域实践应用案例分析
    Axure大屏可视化模板,凭借其强大的功能性和灵活性,在众多领域中发挥着举足轻重的作用。本文将详细探讨Axure大屏可视化模板在农业、园区管理、智慧城市、企业数据可视化和医疗领域的应用案例,展示其如何助力各行业实现智能化管理和决策优化。一、农业领域:智慧农业的得力助手智慧......