Unity中基于自定义资源配置实现对象池管理

        此次的实现效果是,将对象池可以批量管理,只需要提前将对象池的名字、预制体、最大数等配置好,存成资源配置文件,然后存于本地;运行时读取配置文件,将对象池信息存于字典中,当需要对应的实例对象时,只需给出对象的名字就可从对象池中取得。

        做了一个自定义菜单实现点击菜单时,创建资源配置文件,以便手动的批量配置对象池。

1. 对象信息及实例化取得对象

1.1 对象信息及方法(GameObjectPool.cs)

        [Serializable],序列化;可将对象的属性显示于Inspector面板,以便手动配置。
        [SerializeField]序列化字段,可将私有属性仍显示于Inspector面板。
        虽然将批量对象放于字典,但访问时foreach不能一边访问一边修改,所以循环遍历字典时用for循环;

        用两个字典存放对象,一个为正在使用的对象字典,一个为空闲字典,当需要实例化时,先从空闲字典中取得;如果所有放于一个字典,当需要对象时则遍历整个字典,两个字典可以节约性能。

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

/// <summary>
/// 资源池
/// 此资源池将实例化出的对象放于根目录,优化时可将同一类对象放于一个父对象下
/// </summary>
[Serializable]
public class GameObjectPool{
    [SerializeField]//虽为私有成员,但加上[SerializeField]Inspector面板显示
    public string name;
    [SerializeField]
    private GameObject prefab;
    [SerializeField]
    private int maxAmount;

    [NonSerialized]
    public List<GameObject> goActiveIsFalseList = new List<GameObject>();//空闲的实例(未被使用)
    [NonSerialized]
    public List<GameObject> goActiveIsTrueList = new List<GameObjec
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王大匣

你的鼓励是我创作最大动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值