位置: 编程技术 - 正文

[置顶] Unity ----- 对象池GameObjectPool([置顶]马粥街残酷史)

编辑:rootadmin

推荐整理分享[置顶] Unity ----- 对象池GameObjectPool([置顶]马粥街残酷史),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:[置顶]JM259194,[置顶]从lv2开始开挂的原勇者候悠闲的异世界生活,[置顶]游戏名:chivalry2,[置顶]游戏名:chivalry2,[置顶]电影名字《收件人不详》,[置顶]游戏名:chivalry2,[置顶]JM259194,[置顶]JM259194,内容如对您有帮助,希望把文章链接给更多的朋友!

孙广东 .6.

很早之前看到的外国文章,觉得不错,分享一下, 对象池在AssetStore中也是有很多插件的,但是有些重了,自己写一个轻量的岂不是很好。

当你需要创建大量某种类型对象时,它可以方便地重新使用单个对象,而不是不断地 创建/销毁(操作会导致大量的垃圾回收)。此ObjectPool脚本,生成和回收您的游戏对象的对象池。代码: 对于 实例化和回收?轻松地预先实例化对象,以防止运行时实例化?搜索和跟踪所有生成/池子内的在场景中实例化的

怎么使用?通常情况下,当您实例化并销毁prefabs的实例,您在运行时不断创建新的对象和摧毁它们,这可能会导致运行时垃圾回收和偶尔的帧速率下降。ObjectPool 可以防止这种,通过预先实例化,而不是被摧毁然后重新生成对象!

生成池子中的对象:例如,如果我有能发射子弹对象的炮塔,我能创建 枚一模一样的子弹对象并重新使用。子弹将永远不会被销毁,只是取消激活、需要生成时重新激活他们。ObjectPool要做到这一点,你只要调用CreatePool() 生成指定Prefab的对象。

现在你可以使用ObjectPool类中的Spawn() and Recycle() 来代替Instantiate() and Destroy()方法。例如,当抢发射子弹时,我生成子弹实例:

当你想要回收这个实例,在你想要消失的组件或者对象上调用Recycle()函数。 当子弹发生碰撞时,我们将回收它。

函数Spawn()被创建的对象的引用, 所以你能够存储这个对象或者调用它的其他方法. 这个函数不像Unity的 Instantiate(), 你不需要强制类型转换得到 GameObject or Component.

小心用回收的对象!现在,您的对象正在被回收和重新使用,你必须要小心,因为如果您的实例有任何变量被改变,您必须手动重置它们。你可以通过使用Unity提供的的 OnEnable() 和 OnDisable() 函数,只要您的实例使用spawned or recycled函数将会触发OnEnable() 和 OnDisable()。

[置顶]
        Unity ----- 对象池GameObjectPool([置顶]马粥街残酷史)

例如,这是不正确的:

为什么不对呢?因为我们的timer变量计数,但永远不会返回到零!所以当回收并在此使用时,它已经不是最开始的状态了。我们可以很容易解决这个问题:

现在我们的子弹正确重置他的timer变量。

你能通过对象引用预制体,在以前是不能的GameObject现在有组件的扩展方法

InitialPoolSize 参数已添加到 CreatePool()函数总,并告诉它要预先实例化多少的对象,这些都是最初被隐藏和延迟生成的。您还可以将 ObjectPool 附加到一个游戏对象,通过inspector 设置要 预先实例化 的预制体附加函数已经添加了用于搜索/统计 实例对象

如果你想要 RecycleAll 要使用派生类型,然后更改这:var active = instance.prefabLookup.Keys.Where(p => p.GetType() == typeof(T).ToList();to:var active = instance.prefabLookup.Keys.Where(p => p is T).ToList();也适用于 GetAllOfType 的类似的变化

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Unity3D编写ARPG游戏——角色属性的定义与实现(一) 今天考完了大学最后一门考试,是瞬间感觉轻松了一点,花了一天多的时间预习一本书,马上就去考试了,就结果而言还是不错的。但是不知道是一种

某网贴出来的u3d面试题目汇总,当时学习下(好多我都不会呢) 在蛮牛网看到这个东西,原作者我也没注意是谁,看了下很多知识我都不会呀,算是学习一下吧,这里贴出来,大家看看。第一部分1.请简述类型与引用

关于Unity Plugins文件夹 如果Plugins文件夹中存在Plugins/x和Plugins/x_这两个文件夹,则dll必须放入这两个文件夹中,否则会出现找不到dll的情况

标签: [置顶]马粥街残酷史

本文链接地址:https://www.jiuchutong.com/biancheng/369234.html 转载请保留说明!

上一篇:Unity性能优化(unity性能优化工具)

下一篇:使用Unity3D编写ARPG游戏——角色属性的定义与实现(一)(unity制作ar手机游戏)

  • 视同销售计税价格如何确定?
  • 个人独资企业的责任承担
  • 计提所得税分录计提的时候金额比实际缴纳多
  • 退个税app操作
  • 分销佣金税务处理
  • 受托代销商品款是什么科目
  • 企业出售不动产的涉税问题
  • 母子公司往来明细账正反面都可以写吗
  • 企业预缴的增值税税率
  • 企业所得税的优点有哪些
  • 买卖金融商品应交增值税计算
  • 增值税一般纳税人证明文件
  • 如何申报加计抵减
  • 红字发票做进项转出还是红字负数
  • 个体户能开增值税专用发票税率是多少
  • 计入固定资产的土地
  • 代扣代缴个人所得税会计分录怎么做
  • 一次性奖励随工资发
  • 服务费不开发票可以做无票收入吗?
  • 营业账簿印花税包括什么
  • 应交税费不核算
  • 事业编年底
  • 租赁房使用权和所有权冲突
  • 应征增值税不含税销售额(3%征收率)怎么算
  • 当期净资产收益率怎么算
  • 新个税劳务报酬怎么算
  • 确认收入后又退部分款怎么做账
  • 固定资产折旧应该考虑哪些因素
  • 企业收到外部水电费如何做账?
  • 最新w10系统专业版
  • 零售业收入
  • 小规模季度不超过30万的账务处理
  • 现金日记账的收为什么不根据银行和现金相互划转
  • 代扣代缴的增值税可以作为进项税抵扣吗
  • 表单提交错误后怎么撤销
  • 详解php语言最牛的语言
  • ThinkPHP让../Public在模板不解析(直接输出)的方法 原创
  • 如果电脑中毒了,航佳进销存还能使用吗
  • Window7+CentOS 6.5双系统安装图文方法
  • ccs是什么软件
  • 电脑开机按f8出现please select
  • 第4章 数据处理思维导图
  • 在建工程账务核算方法
  • 退货时可以按部分退货吗
  • php实现图片上传到网页显示
  • vue中$route
  • 21世纪20年代的中国
  • 用css画一个扇形
  • php require函数
  • 委托第三方收款合法吗
  • 中国烟草资产负债表
  • 预收账款是否要缴纳增值税
  • 设计模式适配器模式代码编写
  • okhttp源码
  • 技术开发免征增值税怎么开票
  • 小规模购进原材料可以抵扣税金吗
  • asp 数据库
  • 成本核算分摊方法总结
  • 小规模纳税人税额怎么算
  • 所得税汇算清缴调整后要账务处理吗
  • 甲方向乙方支付
  • 医院如何开票
  • 企业找审计是为了什么
  • 免缴土地使用税是不是不用交税
  • 固定资产清理借方增加还是减少
  • 开票后收不回来款怎么办
  • 专票入账用哪一联
  • windows使用痕迹是指是什么
  • sql语句大全实例教程
  • 安装xp后win7不能用怎么办
  • macbook系统怎么用
  • win10正式版激活码
  • ie在支持ftp的功能方面
  • Android -- service两种启动方式startService与bindService
  • shell脚本中判断字符串是否相等
  • node怎么实现多线程
  • 房屋附属设备和配套设施计征房产税
  • 专票怎么查询已开记录
  • 国家税务局大数据局
  • 个人所得税计算扣除五险一金吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设