2 Star 5 Fork 4

tom / AutoLoad

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

自动加载预制组件 AutoLoad

目前大家都有过这样的开发场景,游戏主要集中在1~2个场景中,游戏的内容很多,功能各异。

面临问题

  1. 如果全部拼在一个场景中.
  • 场景会变得很大,打开编辑和游戏加载都会变的很慢。
  1. 分成一个一个小的预制,在代码中按照预定规则加载上来.
  • 无法在编辑器中预览整体效果
  • 修改得拖上来-修改-保存-移除. 步骤繁琐
  1. 写一个组件绑定预制 在编辑器预览和移除
  • 实际加载时也要先加载绑定预制 才能显示界面
  • 需要小心运行运行和关闭界面时 没有忘记移除

组件效果

  1. 挂在AutoLoad绑定预制

    • 不会拖慢加载界面的速度
    • 不是将预制直接复制到界面中, 而是将预制的uuid保存到AutoLoad的uuid属性中.
  2. 编辑器中可以预览绑定预制的生成效果

    • 根据uuid找到预制, 加载并创建node
    • 默认锁定 防止误触
    • 不会被保存 界面修改 或 node修改, node都不会被保存到界面上, 下次打开界面上时还是什么都没有 ^_^
  3. 修改node时可以保存覆盖到原预制

  • 实时调整界面效果, 实时生成界面效果
  • 鼠标选中node, 才会生效. 防止临时调整也被保存
  1. AutoLoadEditorAutoLoad 相关又分离
  • AutoLoadEditor继承AutoLoad
  • 编辑器中选中AutoLoad就是使用AutoLoadEditor
  • 界面实际保存时保存的是AutoLoad
  1. JudgeLoad可以自己添加属性实现在不同平台是否使用 AutoLoad组件
  • 老的预制已经完工 但是又不想在界面上显示 可以用此隐藏起来
  1. 最终达到快速显示界面上的内容 功能也能一个一个完整的加载上来

原理

  1. 绑定预制时 预制的属性_uuid 就是预制的uuid 可以据此找到该预制

  2. 修改node的 _objFlags属性

  • cc.Object.Flags.DontSave 不保存
  • cc.Object.Flags.LockedInEditor 编辑器锁定
  1. 保存修改预制到原预制
  • Editor.Ipc.sendToPanel('scene', 'scene:apply-prefab', this.child.uuid)
  1. 监听软重载, 避免 保存
  • require("electron").ipcRenderer.on("scene:soft-reload", this.removeNode)
  1. 编辑器替换组件
  • 修改cc.js中的 _idToClass 和 _nameToClass

快捷键:

  1. alt+a 显示/隐藏左右自动加载预制
  2. alt+s 保存选中node (可以的时node子节点也可以)

结束

  1. 代码简单易懂 欢迎各位自己动手改成自己喜欢的样子
  2. 之前使用过插件来实现这个功能, 后来发现不是我想要的. 这使得这套功能变得复杂, 不利于自己和各位依据自身情况, 动手修改.

项目地址

https://gitee.com/landream/AutoLoad

空文件

简介

暂无描述 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/landream/AutoLoad.git
git@gitee.com:landream/AutoLoad.git
landream
AutoLoad
AutoLoad
master

搜索帮助