Code Monkey home page Code Monkey logo

kengine's Introduction

KEngine现已同时兼容Unity 4和Unity 5。默认资源AssetBundle使用Unity 5进行构建,在使用Unity 4打开工程后,Asset Bundle需要重新再打包。

Unity 5建议直接使用KSFramework, 整合KEngine+SLua, 并移除一些Unity 4的支持模块。

KEngine

Build status

KEngine是一个用于Unity3D引擎的AssetBundle框架。

她的核心,资源模块(ResourceModule)为AssetBundle的资源加载、打包提供完整的一套工程规范,减少在项目开发过程中踩坑的时间; 同时基于资源模块,提供了UI模块(UIModule)、配置表模块(SettingModule),实现完整的项目协作工作流。

An official fork from CosmosEngine: https://github.com/mr-kelly/CosmosEngine CosmosEngine的官方改名、改进版

特点 / Features

  • 代码精简, 运行时没有使用反射机制,高性能
  • 适用于PC/Android/IOS平台开发
  • 良好扩展性,支持资源的高清版、低清版
  • 两种异步风格的AssetBundle加载
  • 具备完整的策划->美术->程序工作流
  • [美术资源]包含AssetBundle的加载、打包
  • [美术资源]编辑器模式下AssetBundle的性能调试器
  • [UI界面]基于约定的、无配置式的UI模块
  • [策划配置]基于Excel进行编译,配置表可添加图表、注释、批注
  • [策划配置]配置表加载支持运行时热重载, 无需重启立即生效
  • [策划配置]自动生成文档完善的静态代码,大大便捷开发流程

整体结构:模块插拔与三大基础模块

KEngine本质上只是一个模块容器(Module Container),它只为各个模块提供初始化管理。

打个类比,计划开发一个住宅社区,KEngine是一块没有开垦的满是泥巴的地,资源模块(ResourceModule)就是为这块地铺上了水泥;UI模块就是这个社区的会所,配置表模块就是这个社区的物业公司,它们都以水泥地的铺设为前提。接着各式各样的楼房,就是各个不同的自定义模块了。

框架中存在三大基础模块:

  • 资源模块 / ResourceModule(基础模块)
  • UI模块 / UIModule
  • 配置表模块 / SettingsModule

AppEngine.Create函数可以传入继承IModule的类来实现模块添加。所有的IModule统一通过协程来进行初始化的。


快速入门DEMO

Unity打开Assets/KEngine.NGUI.Demo/KEngineNGUIDemo.unity

点击播放, 将会加载一个简单的基于UGUI的AssetBundle资源。


KEngine安装器

KEngine.Installer安装器为现有项目嵌入KEngine提供方便的支持,可以以源码、DLL等不同形式导入。

使用KEngine.Installer安装器

开发人员使用指南

策划人员使用指南

策划人员使用Excel文件的编辑,KEngine在运行过程中会监测Excel配置表目录,当发现有改动时将对Excel进行编译。

编译出的纯文本文件交由程序读取,同时编译出的纯文本文件,方便在svn进行合并、比较。(另外像诸如Beyond Compare等工具,直接支持Excel文件的比较)

ExcelEdit

使用编译模式的最大好处,策划人员可以在Excel上进行注释、图表、批注等附加工作,甚至可以把一些文字描述文档,放到Sheet2。让配置表与文档结合在一起。

ExcelOutput

Excel文件经过编译后变成CSV格式的表格,并且去掉了注释行。

SettingModule Confirm

在Unity打开情况下,修改Excel,将监测到改动,弹出提示框

SettingModule Tips

关闭或确定提示框后,将进行表编译工作

PS: 如果在Unity未打开情况下进行Excel表的修改保存,将无法自动监测到改动。这时候,需要在打开Unity后通过菜单"KEngine->Settings->Force compile settings"进行手工编译。

配置表支持热重载功能。在Unity播放状态时,修改Excel表并重新编译,运行中的配置表会自动重新加载。无需重启游戏。

配置表支持多表合并(分表),如AppConfig+Skill.xlsx和AppConfig+Buff.xlsx,它们可以做成一样的表头结构; 对于策划来说,可以多个表之间填写数据;而对于程序来说,在加载和使用时会合并成AppConfig一个表。

示例Excel文件: KEngine.UnityProject/Product/SettingSource/Example.xlsx(将被编译到KEngine.UnityProject/Assets/Resources/Example.bytes)

美术人员使用指南

在目录**ResourcesBuild**中依次建好产品化所需的目录,如UI、Effect、Audio目录,资源依序放入。

程序需要根据项目需求,在构建系统写入适当的脚本对各个目录进行分别打包。

基础配置/Config

KEngine.UnityProject/Assets/Resources/KEngineConfig.txt为CSV格式配置文件,可拖入Excel打开编辑, 也可通过菜单KEngine->Options进行配置

Demo

KEngineDemo

KEngine.UnityProject/Assets/KEngine.Demo/KEngineDemo.unity为Demo场景。使用了UI、配置表。

kengine's People

Contributors

alucardsyk avatar huangxuping avatar mr-kelly avatar xtutu avatar zhaoqingqing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kengine's Issues

关于使用您的工具的两个问题想请教下

您好,首先非常感谢您开源这份代码给大家,我们的项目基于您的工具进行初始框架的搭建,节省了不少时间,向您的共享精神表示感谢~~
我们目前遇到了一个问题,主要是在AssetBundle的加载中,而我们自己修改了部分ResourceModule代码,因此不确定是框架内本身带有的问题还是我们自己改出的问题,所以我尽力描述一下,不知道以您的经验是否能够提供一些帮助(我们自己已经查了1周多时间了。。。)

主要问题出现在KAssetFileLoader中,我加log来看,我们使用InstanceAssetLoader来加载一个资源,它使用AssetFileLoader来加载,进而使用AssetBundleLoader加载AB文件,我们发现某些时候出现某个资源的AssetFileLoader被销毁,而AssetBundleLoader并没有被销毁的情况,这时候由于AssetFileLoader中的第236行
Object.DestroyImmediate(ResultObject as Object, true);
之后再用这一个AssetBundleLoader来加载AB,就会报错,触发AssetFileLoader中第136行或者第145行的Assert。

我仔细跟了一下GC的过程,感觉有一个小问题,比如一个InstanceAssetLoader被清理时,它使用的AssetFileLoader才会被release掉,这时候并不会立即GC,而是等待下一个GC周期,比如几秒之后,才会清理AssetFileLoader,进而AssetFileLoader的引用计数才会标记为0,等待下一个GC周期的清理。

我不知道对于您这边GC的设计是否理解正确,我自己也不太理解为什么Object.DestroyImmediate(ResultObject as Object, true);这句话会导致一个被复活的AssetBundleLoader加载资源失败,不知道您能否给些建议或者指导?

再次感谢~~

跑demo的时候找不到资源

定位到AssetBundleLoader的PreLoadManifest
1.KResourceModule.BundlesPathRelative 本身就已经包括平台的名字了 这里2次叠加平台名字
用BytesLoader去Load这个目录(KResourceModule.BundlesPathRelative)存在逻辑问题..

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.