Unity_JK框架【1】 框架导入 对象池示例 (资源管理底层)

一、JK框架介绍

主要功能系统:

  1. 对象池系统:重复利用GameObject或普通class实例,并且支持设置对象池容量

  2. 事件系统:解耦工具,不需要持有引用来进行函数的调用

  3. 资源系统

    • Resources版本:关联对象池进行资源的加载卸载
    • Addressables版本:关联对象池进行资源的加载卸载,可结合事件工具做到销毁时自动从Addressables Unload
  4. MonoSystem:为不继承MonoBehaviour的对象提供Update、FixedUpdate、协程等功能

  5. 音效系统:背景音乐、背景音乐轮播、特效音乐、音量全局控制等

  6. 存档系统:

    • 支持多存档
    • 自动缓存,避免频繁读磁盘
    • 存玩家设置类数据,也就是不关联任何一个存档
    • 支持二进制和Json存档,开发时使用Json调试,上线后使用二进制加密与减少文件体积
  7. 日志系统:日志控制、保存等

  8. UI系统:UI窗口的层级管理、Tips功能

  9. 场景系统:对Unity场景加载封装了一层,主要用于监听场景加载进度

  10. 本地化系统:分为全局配置和局部配置(随GameObject加载)、UI自动本地化收集器(Text、Image组件无需代码即可自动本地化)


框架源码地址:https://github.com/Joker-YF/JKFrame   框架Github地址

二、框架导入

将下载下的框架文件夹拖拽到Assets问价夹下即可
如遇到报错是Odin插件的报错,重新打开工程即可

三、对象池简单示例

TestPoolSystem 脚本 


1. 数据类普通对象 和 游戏对象  的简单使用流程, 此方法做解释不调用
 void 简单使用()
 {
     // 1.普通对象
     BagData bagData = new BagData();
     

     //把对象推送给对象池
     PoolSystem.PushObject(bagData);

     //对象池获取对象
     BagData bagData2 = PoolSystem.GetObject<BagData>();
   


     //2, 游戏对象
     GameObject bullet = GameObject.Instantiate(bulletPrefabs);
     bullet.name = bulletPrefabs.name;
     PoolSystem.PushGameObject(bullet);
     GameObject bullet2 = PoolSystem.GetGameObject(bulletPrefabs.name);

 }
2.初始化流程介绍:可选择初始化对象池的限制,通过Get/Push去调用取出放入,最后做清理对象池的操作
 void 流程()
 {
     //1.初始化(非必要)  设置了子弹池,最多50,默认生成50
     //如果不初始化 ,就是无限空间,没有默认数量
     PoolSystem.InitGameObjectPool(bulletPrefabs, 50, 50);

     //2,放进去和获取  Get/Push

     //3,对象池清理
     PoolSystem.ClearGameObject(bulletPrefabs.name);

 }
3.完整代码:对应上图Gif的效果 ,鼠标左键控制发射子弹
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using JKFrame;

public class TestPoolSystem : MonoBehaviour
{

    public GameObject bulletPrefabs;

    // Start is called before the first frame update
    void Start()
    {
        PoolSystem.InitGameObjectPool(bulletPrefabs, 10, 10);

    }

    void 简单使用()
    {
        // 1.普通对象
        BagData bagData = new BagData();
        

        //把对象推送给对象池
        PoolSystem.PushObject(bagData);

        //对象池获取对象
        BagData bagData2 = PoolSystem.GetObject<BagData>();
      


        //2, 游戏对象
        GameObject bullet = GameObject.Instantiate(bulletPrefabs);
        bullet.name = bulletPrefabs.name;
        PoolSystem.PushGameObject(bullet);
        GameObject bullet2 = PoolSystem.GetGameObject(bulletPrefabs.name);

    }

    void 流程()
    {
        //1.初始化(非必要)  设置了子弹池,最多50,默认生成50
        //如果不初始化 ,就是无限空间,没有默认数量
        PoolSystem.InitGameObjectPool(bulletPrefabs, 50, 50);

        //2,放进去和获取  Get/Push

        //3,对象池清理
        PoolSystem.ClearGameObject(bulletPrefabs.name);

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            PoolSystem.GetGameObject<BulletControler>(bulletPrefabs.name).Init(Vector3.zero,Random.Range(5,10));

        }
    }
}

/// <summary>
/// 例子: 背包里一个格子的数据   要复用
/// </summary>
public class BagData
{

}

BulletControler :子弹控制脚本,配合子弹预制体使用
 

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

public class BulletControler : MonoBehaviour
{
    private bool isInit = false;
    private float moveSpeed;
    public void Init(Vector3 pos, float moveSpeed)
    {
        transform.position = pos;
        isInit = true;
        this.moveSpeed = moveSpeed;
        Invoke("Destory", 1f);

    }
    public void UnInit()
    {
        isInit = false;
    }

    // Update is called once per frame
    void Update()
    {
        if (isInit)
        {
            transform.Translate(Vector3.forward * Time.deltaTime * moveSpeed);
        }
    }

    private void Destory()
    {
        UnInit();
        PoolSystem.PushGameObject(gameObject);
    }
}

基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例,该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值