Cocos creator -引擎解构

Cocos creator -引擎结构

在长期的开发中,发现cc对大型的手游加载项目的速度很慢,于是我产生了一种想法,想把
cocos creator移植在Linux上做开发,编译时在Windows。但是这样太麻烦了。索性,研究一下它的构造,看看能否优化一下.
于是发现了很精彩的结构和内造,接下来解释一下,有能力的开发者,可以自由修改版本,但不能使用修改的版本进行商业化,这是官方的原话。
首先看看我对我的cc都做了什么吧?
在这里插入图片描述

1.修改了icon,证明这是我个人使用,不对外开放的
2.增加了 一个局域网穿透功能()=>将绑定的:7456端口 映射给 公网ip+域名  =  对外访问的游戏(全程挂起调试的游戏即可)3.增加了 一个骨骼动画()=>将弹出一个 UI面板,可以将目前的骨骼动画,拖拉拽改动,并保存会生成一个如:{320,740;310,730;300,720;}这样格式的json,不用手写,即可快速遍历读写生成骨骼动画拉![快夸我是不是很聪明??]4.增加了一个 图片转素材的功能会将你导入的PNG二值化,然后移除背景色,帮你扣出图来if(你没有抠图)=>帮你抠图->帮你压缩->完成else(你抠图了)=>帮你压缩->完成

在这里插入图片描述

在这里插入图片描述
1.打开你的CC根目录,找到 Resources 资源目录 =>.editors编辑录=》creator -你在使用的版本。[我这里以 2.3.3为例]
在这里插入图片描述

  1. Locales = 加密的资源\源-工程\时间戳\浏览器扩展 等
  2. resources = 引擎资源\内核\css\库
  3. swift shader = C++的Lib,工程UI\字体\图标\MAIFO
    如果你尝试去打开 swift shader 的lib,或许你可以修改一些界面样式
    然后为其注入call 来实现某种功能
    但他主要的,是为cc创建界面而准备的动态库

2.Cocos Creator -自己构造函数

进入 utils->api ,打开这个文件
在这里插入图片描述
如果你对TS很熟悉,那么这里你就能构造并定义你自己的方法。
但很遗憾,我没有学TS。。 [跳到下一章吧!]
在这里插入图片描述

2.1 Cocos Creator -贡献者
你可以在 Sharp-package.json 里 添加你的 Git,或者增加你的名字,在本地项目里,可以看见自己。
(自我籍慰)没什么用
2.2 Cocos Creator - templates 模板教程工程
你可以在templates里,找到几个示范工程,最简单的hello world就是其中之一
2.3 Cocos Creator-static 内构目录
static-img 下:你可以修改cc的图标,在编译时,看到自己的画面
目前不知道,是否会修改编译调试的那个logo 图标
static-icon 下:编译调试时一并打包进去的icon
其余的可以自行看看,大部分是一些描述和资源文件,以及压缩插件和导入资源的加载方式
和过滤方式

3.cocos creator-inspector 引擎内核构造

3.1accessibility -访问的成员属性与定义
3.2animation - 对animation的高度封装 (cc的写法很好,无需优化) √可学习
3.3audits - 你的coco 工作流-联网-验证-云存
3.4bindings - 绑定你的账号 和3.3关联
3.5changes - 启动时检查你的版本与目标版本是否一致
3.6cm - web的图像显示方式转换为 cc独有的 坐标系
3.7color_picker - 将cc-ui的事件color操作转换,和拾色器工具,颜色变化node
3.8console 调试台
3.9cookie_table - 你的浏览器调试器下的cookie记录,使你能看到
3.10coverage - cc的更新推送
3.11 cpu_profiler_test_runner - CC.CPU调试核心调用模块
3.12 devices - 驱动模块调用启动
3.13 elements - ×无解
3.14 javascript_metadata - 语言二次解析
3.15 layer_viewer_module - 图层模块 ,对图层的设定 √可学习 √可改
默认的基数z-index:9000 0->1->2->3->4
取决于Node的类型
3.16 quick_open_module -快速打开模块 ,你为某一moudule勾选了模块后的导入
3.17profiler - 检查机制 时刻检查你的语法
其实只对class属性生效
3.18sdk_test_runner - 模拟器启动 ,如果你以模拟器启动调试的话
3.19 timeline - 由cc生成的时间轴动画

4.cocos creator-engine 引擎内核渲染

4.1 bin -》 cocos2d-jsb
在你调试时,这个文件会处理调试的信息,进行传递或抛出异常
你可以汉化它的 “1001”:“xxxxxxxxx”,对以后的开发进行加速
这样你看到一些英文的时候,可以立即想到哪些问题
4.2 cocos2d 是整文中的重点
4.2.1 actions +animation -运动动画-
理解cc的动画先要理解它的坐标系,本文有讲;
理解坐标系后,可以进阶,捕捉或自定义方法,构造简单的动画
你可以向 actions-index.js 里 require你的方法路径
CC.tween 可以替代传统的 actions ,它更为灵活
但不要刻意追求最好的,要写最适合的!不是你有了Gucci,Nike就不香了
4.2.2 audio-音频
CC.audio 对音频的构造 使用了状态标记
这样便于多个子集的音频管理
想象一下你的一个页面里,几百个音频如果同时播放,不是乱套了?
你设置了ture和false,然后cc帮你设置了一个状态集。
4.2.3 compression- 压缩
是目前大多数人很头疼的事情,有些技术,只专注写程序,不管其它的组件大小,资源大小。
New prefab 很多人认为它就是 生成了一个,于是很多地方都用prefab,最后整个项目成千上百个组件。
为什么你在本机写了这么多,你没有感到卡顿?因为你已经有了运行和缓存\和log缓存,cc可以很快速的帮你指定prefab的位置;但你的工程考给别人,这个人的加载就会变的很慢!一直到他调试把整个游戏跑了一遍后,下次启动才没有这么卡顿。
卡顿原因:
1.所有的资源打包后,没有缓存和日志了,所以会很卡(暂时的)
2.项目没有做好压缩优化
3.重复书写的高效率,低解释语法太多了
4.2.4 core -核心
CCNode.js
对节点的操作-选择,旋转,点击等操作
CCGame.js
对游戏的渲染类型判断,取决于浏览器的回调返回
你的游戏页面逻辑渲染,统统由这个文件来判断是否执行生效
组件
assets

  • CCAudioClip-音频剪辑
  • CCBitmapFont-bitmap字体
  • CCLabelAtlas-标签集
  • CCPrefab-预制体
    还有一些没有列出来的,组件。有能力,可以自己看看它们的定义
    这里只是告诉大家这里有什么
    camera
    CCCamera 对相机的定义
    摄像机在制作卷轴或是其他需要移动屏幕的游戏时比较有用,使用摄像机将会比移动节点来移动屏幕更加高效。
    如果你对你的2D相机,不是很满意,你可以修改它的缩放比率
  • @property {Number} zoomRatio
    以及他的模式,裁切,过滤色。

4.2.5 webview
这是所有个人发开者,公司,必须会用的功能
如:激励广告
CCWebView
#zh WebView 组件,用于在游戏中显示网页。由于不同平台对于 WebView 组件的授权、API、控制方式都不同,还没有形成统一的标准,所以目前只支持 Web、iOS 和 Android 平台。
各位可能在实际开发中遇到的问题:
1.webview视图被遮挡
2.打不开指定的网页
3.被拦截
想知道自己的调用,是否成功或失败

webviewEvents: {default: [],type: cc.Component.EventHandler,},

应该拿到它的回调,来看返回信息

  • 设置 JavaScript 接口方案(与 ‘setOnJSCallback’ 配套使用)
  • 当加载 URL 以 JavaScript 接口方案开始时调用这个回调函数。
 setOnJSCallback (callback) {if (this._impl) {this._impl.setOnJSCallback(callback);}},

执行 WebView 内部页面脚本
需要自行解决跨域问题

 evaluateJS (str) {if (this._impl) {this._impl.evaluateJS(str);}},

你必须使用,node.on来监听
因为此事件是从该组件所属的 Node 上面派发出来的

  • 如果你不再使用 WebView,并且组件未添加到场景中,那么你必须手动对组件或所在节点调用 destroy。
  • 这样才能移除网页上的 DOM 节点,避免 Web 平台内存泄露。

如果你想要修改WebView的界面样式

  • 打开webview-impl
  • _createDom 是创造的元素
  • createDomElementIfNeeded 是构造的样式
  • WebViewImpl.EventType 里有4种状态码
  • 在W.V.E.T 下方有 判断设备类型
//如果你在上方修改了,那么建议你在新建一个自己的方法,调用官方的方法,来传值
//因为不知道会关联多少方法的值,所以谨慎一些
//------------------------------------------------
//然后在你要的设备类型下执行你的方法,那么属于你想要的显示样式就可以实现了
//这种方法不同于你在CC里的直接显示方式!if (sys.os === sys.OS_IOS)polyfill.enableDiv = true;if (sys.isMobile) {if (sys.browserType === sys.BROWSER_TYPE_FIREFOX) {polyfill.enableBG = true;}
}
else {if (sys.browserType === sys.BROWSER_TYPE_IE) {polyfill.closeHistory = true;}
}

日常里基本会遇到的问题,再次提供的思路,是方便各位深度理解CC原理;
文章到此,我是大菠萝~
如果说的不对的地方,欢迎切磋呢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉简介:历史、现状和发展趋势

来源:专知 概要:正像其它学科一样,一个大量人员研究了多年的学科,却很难给出一个严格的定义,模式识别如此,目前火热的人工智能如此,计算机视觉亦如此。 【导读】本文由中国科学院自动化研究所模…

IIS-HTTPS(TSL)强制开启的方法和解决过时的安全问题

IIS-HTTPS(TSL)强制开启的方法和解决过时的安全问题 系统为:Windows server 2008R2 工具为:IIS6 数据库为: Windows Sql server 2014 证书为:腾讯云颁发的AC证书 首先你需要这几个工具 IISCrypto | 检测和为你配置最安全的 策略环境 手写reg注册表 | 来关闭本地的事件 Windo…

AI在医疗行业的最新进展

来源: Future智能 概要:随着人工智能、大数据等相关应用与理念的不断传播,越来越多曾经深入人心的观念被彻底撼动,当然,医疗行业也不例外。 随着人工智能、大数据等相关应用与理念的不断传播,越来越多曾经深…

SHA384-算法解密(2)还原元数据

SHA384-算法解密(2)还原元数据 上一次的讲解比较潦草,这次写的更全面详细一些。 首先各位,如果想要解开使用这个算法加密后的数据,必须先学会加密,才能解密。 声明:这里仅供学习研究,不要学了三脚猫功夫就…

美国《时代》周刊公布年度25大最佳发明名单

来源: 中国智慧城市导刊 概要:除了大名鼎鼎的iPhone X和特斯拉model 3,还有好多你可能还未听过的新奇玩意。 当地时间16日,美国《时代》周刊发布了2017年25大最佳发明名单。除了大名鼎鼎的iPhone X和特斯拉model 3,还有…

顶级隐写术,破坏一切解释器

什么是隐写术? 就编程来说,隐写的信息通过加密或混淆,其内容例如一张购物清单,一篇文章,一篇图画或者其他“伪装”(cover)的消息。 隐写的信息通常用一些传统的方法进行加密,然后用…

“头移植模型”论文称换头术可行 业内疑两大问题未解

来源:澎湃新闻 概要:11月21日,“换头术”的倡导者、哈尔滨医科大学教授任晓平在一场见面会上称,团队在科学领域取得重大突破, “完成了人类第一例头移植外科实验模型”。 11月21日,“换头术”的倡导者、哈尔…

图片有损解构术

图片有损解构 解释:将任意图片解构其PS或修图或雪碧图拼接之前,将通道与法线分离并在原图展现出来 在群里经常看到某些人转发一些图片,有意或者无意的,勾起了我的好奇心,他们这么做有什么好处? 左边图片是…

让机器听懂世界,触及人类梦想还有多远?

来源:陈孝良科学网博客 概要:语言对于人类文明的重要性不言而喻,但是语言的起源却是个高度争议的话题,我们对此几乎一无所知。 语言对于人类文明的重要性不言而喻,但是语言的起源却是个高度争议的话题,我们…

[实战]前端wireshark抓包协议解密

前端wireshark抓包协议解密废话不多说,先看看结果该JSON文件是通过解密后的 HTTP 返回response结果再解密打开的新页面 有兴趣的小伙伴了解下之前的文章 Sha384解密[2] 打开Wireshark 将TCP 转码为RTP ,因为该目标地址有视频文件,方便转换 登…

前端React结构工程-改写render

前端React结构工程-改写render 工程准备事项 npm installcnpm初始化工程实例 以上是实例化,安装过npm后的列表 接下来使用 npm run start 来启动项目 当你启动项目后会看到react给我们准备好的 默认界面 React中的 diff原理 和 调度原理是 这次探索的目标 只有搞…

未来智能实验室成立,建设世界第一个智能系统智商评测和趋势研究机构

来源:未来智能实验室 互联网云脑逐渐清晰,AI与互联网结合引发AI威胁论 从科学史可以看到这样一个规律:每一次人类社会的重大技术变革都会导致新领域的科学革命。互联网革命对于人类的影响已经远远超过了大工业革命。与工业革命增强人类的力量…

自己动手制作一门语言(1)波罗语

自己动手制作一门语言(1)波罗语 波罗语:基于波斯(阿拉伯语)的繁衍,主要目的是二向加密语言。防止被保护的数据泄露和解密。使用在计算机与书本中使用语言的发音 主要以 ah 、v 、hv 颤音、哈音、卷舌 创造一门语言很容易,要实现起来确很难&a…

高盛:人工智能报告中文版(45页)

来源:数据局 概要:人工智能是信息时代的尖端科技。计算的飞跃建立在人类告知计算机如何表现的基础上,计算建立在计算机学习如何表现能够对每个行业有意义的基础上。 人工智能是信息时代的尖端科技。计算的飞跃建立在人类告知计算机如何表现的…

人工智能硅脑竞赛:传统芯片巨头VS AI芯片创企

来源:亿欧 概要:但现在,一些芯片企业家得到了不同程度的欢迎。投资者没有对此嗤之以鼻,而是“慷慨地”拿出其支票簿。 英国半导体创业公司Graphcore的联合创始人兼首席执行官Nigel Toon表示:“几年前,许多…

React+Nginx 二级域名指向配置

使React线上项目二级域名指向端口欢迎使用Markdown编辑器开始前检查你的Nginx 检查是否正常编写nginx.conf在同级目录的conf.d目录里清理一下缓存欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑…

佳能g2810打印机扫描怎么用_办公用这款佳能彩色激光打印机无线MF643CDW就够了!...

佳能MF643CDW彩色三合一激光打印https://www.zhihu.com/video/1195286618850979840近两年来,激光打印机正以惊人的速度在办公室、商业用户中普及开来。新一代的彩色激光打印机正以其前所未有的低价位开始大规模进入主流办公室,越来越多的用户将在办公室中…

史上最完整的人工智能书单大全,学习AI的请收藏好

来源: 产业智能官 概要:想自学人工智能,到底看什么书?现在关于AI的图书成千上万,那些才是最好的? 想自学人工智能,到底看什么书?现在关于AI的图书成千上万,那些才是最好…

Cocos creator构建web-moblie 封装到android启动

Cocos creator构建web-moblie 封装到android studio中启动 构建的版本采用 使用21 api版本 5.0 可能的问题&#xff1a;影响到其它事件功能的无非实现 *如果 请升级语法 本次构造和启动为 远程url的形式加载启动 activity_main.xml <?xml version"1.0" encodin…

pcb布线拐角处打地孔_PCB线路板布线的10个重要规则——公众号【深圳LED网】

PCB布线&#xff0c;即铺设通电信号的道路以连接各个器件&#xff0c;这好比通过修路来连接各个城市通车。在PCB设计中&#xff0c;布线是完成产品设计的重要步骤&#xff0c;同时也是技巧最细、限定最高的步骤&#xff0c;甚至有经验的工程师也对布线颇为头疼。以下是PCB布线的…