当前位置:首页 » 操作系统 » cocos源码分析

cocos源码分析

发布时间: 2022-04-26 23:05:34

⑴ 如何评价cocos creator,与unity比的优劣势

优势是比较小,绿色版,如果从cocos2dx-js转过来会比较快。劣势是unity3d有很多现成的资源、插件、源码

⑵ cocos引擎好用吗

cocos引擎是由触控科技推出的游戏开发一站式解决方案,包含了从新建立项、游戏制作、到打包上线的全套流程。开发者可以通过cocos快速生成代码、编辑资源和动画等一整套流程。肯定好用啊!

⑶ Unity和Cocos到底存在着怎样的区别

前者叫简单粗暴,会ppt就能很快精通,没有关于代码整理的文献,有也不是中文,如果想快速做国产卡牌类,梦幻西游(大家都用它)什么的可以选他,不需要会编程,用起来就像maya什么的。
后者学算法,只用VS2017RC(17G)可以巩固CPP,也不难,不过比unity多一点东西,那就是连编程时什么都不知道的新人需要花几小时看完最新基于VS2015平台的CPP入门的书籍。当然他也有cocosCreator,界面看起来和unity差不多。
因为3D算法很早就成熟了,所以cocos也支持3D,不过他的cocosCreator不好弄,主要依靠代码,然而代码相当的简单(unity的编程过程更简单)。然而unity有很多插件,太多了,还是你懂的,所以unity的傻瓜式简单游戏生成时相当的速度。

对于行业来说直接用unity是不可能学到好多算法的,如果是在校大学生,推荐马上搞定cocos,在上unity,你会比现在行业就业人员强很多倍,直接上手unity的话(呵呵,各大平台讲的都是“点几下就够了”,上市书籍也是讲“再点一下就够了”),你要深入全靠你的英语和翻墙堆起来,因为大局域网的限制,很难找到适合你unity进阶的平台,你可能会没有继续深入的欲望。不是说cocos在国内有很多资料,因为国内哪来资料啊,因为他入门就需要接触很多,所以不需要刻意去找。

区别啊,不要想太多了,都可以用JS(阅读性很低),UnityC#,cocosCPP其实这两个差不多的,与其说,会cocos就能马上上手unity,再说简单点,能用cocos写游戏=精通U3D,因为U3D精简了很多不需要写的代码和众多插件。

接下来是对行情,不难说,U3D和尖叫寒霜比渲染就是勒色,不管什么方面都别去比了,所以国内的人很清楚自己的实力,不和国外大牛比3D,就在国内做点渣渣,不过这些渣渣很快就难以生存了,如果要另辟蹊径,就做lowPloy风格或者其他艺术风格,仿油画,水粉,流体,可以很快突破重围,因为世界大多都那个水平,牛逼冲天的拖出来也就是一小堆。PS:尖叫寒霜很像U3D的界面了,都不难,但是没有文献,不过各大引擎有各子的专场渲染,渲染节省了很多时间,你想开发什么样的游戏,就选你需要的引擎就够了。
就业分析,可以选择一个人做独立游戏,可以选择进入公司。独立游戏需要高水准,编程必须会,会配音,懂剧本,会艺术,这些很多但是都不难,因为网络时代,资料难找么。学就入手cocos,如果去普通公司,会ppt再随便报个垃圾培训班就可以找到,度日简简单单轻松写意。想去暴雪,也不是不可以,但是大公司都有一个尿性——团队合作,这和比较C和U没关系了不说了。

基层的区别:cocos擅长2D,unity擅长动画风格3D,尖叫适合仿真,
难度系数:C入门中,U入门简单,C进阶中,U进阶难,C精通难,U精通上青天。

面对像:国产,入门即可。独立游戏,自己看着办。

说点不关于问题的回答,纯新人(不会编程,游戏一点都不懂的人)的学习过程,

unity入门(点一下就够了,接触游戏引擎原理)->processing(面向新人学习编程的语言(冷门,国内艺术生再用),可视化,基本上看完了=会游戏引擎的基础)->cocos入门->unity进阶->unity精通->cocos精通,做到unity精通那一步就让你可以进暴雪,跳过了cocos,那时候转unreal和cry也是简单的,上面都是互通的。

不想说了,因为会编程就不会问这个问题了,买本编程的书吧。
回答问题的时候我在吃饭,因为肠胃不好需要吃得慢。

⑷ cocos js有没有消除类游戏源码

你可以在真机上看 左下角得 绘制数信息和帧速率,如果绘制不高但帧速率低,说明逻辑处理有问题影响了效率,如果绘制数过高,则优先优化绘制。也可以使用profile 工具分析道具体代码。

⑸ cocos creator怎么写逻辑

主要两个js源码:
HelloWorld.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225

cc.Class({
extends: cc.Component,

properties: {
label: {
default: null,
type: cc.Label
},
text: 'Hello, World!',

t_prefab:{
default:null,
type:cc.Prefab
},

t_sprite:{//定义一个cc的类型,并定义上常用属性
default:null,
type:cc.SpriteFrame,//类型的定义
// url:cc.Texture2D, //Raw Asset(cc.Texture2D, cc.Font, cc.AudioClip)
visible:true,//属性检查器中是否可见
displayName:'himi',//属性检查器中属性的名字
tooltip:"测试脚本",//属性检查器中停留此属性名称显示的提示文字
readonly:false,//属性检查器中显示(readonly)且不可修改[当前有bug,设定只读也能修改]
serializable:true,//设置false就是临时变量
editorOnly:false//导出项目前剔除此属性
},

t_url:{
default:null,
url:cc.Texture2D
},

t_count_2:200,//基础类型

//可以只定义 get 方法,这样相当于一份 readonly 的属性。[当前有bug,只设定get也能修改]
t_getSet:{
default:12,
get:function(){return this.t_getSet},//get
set:function(value){this.t_getSet =value;}//set
},

t_array:{//定义一个数组
default:[],
type:[cc.Sprite]
}
},

// use this for initialization
onLoad: function () {

//--->>> 获取组件的几种形式:
//1. 通过属性检查器被赋值的label组件,直接拿到得到实例
//2. 通过属性检查器被赋值的label组件所在的node节点,然后通过getComponent获取
// this.label.string = this.text;

//3. 获取当前this(node)节点上的label组件
// var _label = this.getComponent(cc.Label);

//4. 先获取目标组件所在的节点,然后通过getComponent获取目标组件
var _label = cc.find("Canvas/label").getComponent(cc.Label);

//5.也可以如下形式【注意此种方式,目前有BUG,无法正常使用 (0.7.1) 】
// var _label = cc.find("Canvas/label<cc.Label>");

console.log(_label.string);
console.log(this.t_getSet);

//--->>>全局变量的访问
/* 任意脚本中定义如下:【注意不要有var哦】

t_global = {
tw:100,
th:200
};

*/
t_global.th = 2000;
console.log(t_global.th);

//--->>>模块之间的访问
/*任意脚本中定义如下 【注意关键字是mole.exports】

mole.exports= {
tme_pa1:"100",
tme_pa2:333221
};

*/
//--->>>用 require + 文件名(不含路径) 来获取到其他 模块 的对象
var tMoleData = require("testJs");
tMoleData.tme_pa2 = 991;
console.log(tMoleData.tme_pa2);

//--->>>在当前节点下添加一个组件
var mySprite = new cc.Node().addComponent(cc.Sprite);
mySprite.spriteFrame = this.t_sprite;
mySprite.node.parent = this.node;
mySprite.node.setPosition(300,200);

//--->>>复制节点/或者复制 prefab
//复制节点
var lLabel = cc.instantiate(this.label);
lLabel.node.parent = this.node;
lLabel.node.setPosition(-200,0);
//复制prefab
var tPrefab = cc.instantiate(this.t_prefab);
tPrefab.parent = this.node;
tPrefab.setPosition(-210,100);

//--->>> 销毁节点(销毁节点并不会立刻发生,而是在当前 帧逻辑更新结束后,统一执行)
if (cc.isValid(this.label.node) ) {
console.log("有效存在,进行摧毁");
this.label.destroy();
}else{
console.log("已摧毁");
}

//--->>> 事件监听 on 4种形式
//枚举类型注册
var tFun =function (event){
console.log("touchend event:"+event.touch.getLocation().x +"|"+event.touch.getLocation().y);
};
this.node.on(cc.Node.EventType.TOUCH_END,tFun,this);

//事件名注册
// var tFun =function (event){
// console.log("touchend event");
// };
// this.node.on("touchend",tFun);

// this.node.on("touchend",function (event){
// console.log("touchend event");
// });

// this.node.on("touchend",function (event){
// console.log("touchend event");
// },this);

// this.node.on("touchend",function (event){
// console.log("touchend event");
// }.bind(this));

//--->>> 一次性的事件监听 once
// this.node.once("touchend",function (event){
// console.log("touchend event");
// });

//--->>> 关闭监听
this.node.off("touchend",tFun,this);

//--->>> 发射事件(事件手动触发)
this.node.on("tEmitFun",function (event){
console.log("tEmitFun event:"+event.detail.himi+"|"+event.detail.say);

//-->>> 事件中断,如下函数阻止事件向当前父级进行事件传递
// event.stopPropagation();
});
this.node.emit("tEmitFun",{himi:27,say:"hello,cc!"});

//--->>> 动作,类似c2dx api 基本无变化
var mTo = cc.moveBy(1,-100, -200);
var mAction = cc.repeatForever(cc.sequence(cc.moveBy(1,-100, -200),mTo.reverse(),cc.delayTime(0.5),cc.callFunc(function(action,data){
console.log("action callback:"+data.himi);
},this,{tx:100,himi:"i'm action callback and bring data"})));
mySprite.node.runAction(mAction);
//暂停动作
mySprite.node.stopAction(mAction);

//--->>> 计时器 (component)schele (cc.Node 不包含计时器相关 API)
//参数: call funtion/interval/repeat times/delay time
//不延迟,永久重复
this.schele(function(){
console.log("schele log...");
},1);

//不延迟,有重复次数限定
// this.schele(function(){
// console.log("schele log...");
// },1,2);

//重复2次,重复间隔为1秒,延迟1秒进行
// this.schele(function(){
// console.log("schele log...");
// },1,2,1);

//一次性的计时器
var mySch =function(){ console.log("schele Once log..."); }
this.scheleOnce(mySch);

//取消定时器
this.unschele(mySch);

//--->>> url raw资源获取
var mSf = new cc.Node().addComponent(cc.Sprite);
mSf.spriteFrame = this.t_sprite;
mSf.spriteFrame.setTexture(this.t_url);
mSf.node.setPosition(400,0);
mSf.node.parent = this.node;
mSf.node.setScale(0.5);

//获得 Raw Asset 的 url
var mUrl = cc.textureCache.addImage(cc.url.raw("himi.png"));
console.log("raw asset url:"+mUrl);

},

// called every frame
update: function (dt) {
// if (cc.isValid(this.label.node) ) {
// console.log("有效存在,进行摧毁");
// }else{
// console.log("已摧毁");
// }
},
});

testJs.js

1
2
3
4
5
6
7
8
9

t_global = {
tw:100,
th:200
};

mole.exports= {
tme_pa1:"100",
tme_pa2:333221
};

⑹ 想学cocos2D,主要学些什么好学吗

首先明确一点,这只是个工具,所以会被淘汰,因为cocos是开源的,所以学习源码才是最主要的,学的话买本书,看看网上视频教程,了解一下常用方法和基本架构,主要还是多练多写。

⑺ 急急急!!!求分享cocos写的计算器且能在webstorm上编辑的源码!!!我们今晚要交作业了,

import java.io.BufferedReader;
import java.io.InputStreamReader;
class test
public static void main(String[] args) throws Exception
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=null;
System.out.print

⑻ cocos creator见缝插针源码游戏结束的代码逻辑

别玩游戏

⑼ 求cocos2d-x教程

cocos教程网络网盘免费资源在线学习

链接: https://pan..com/s/1lYZHKPPVuvBR4rddE1jasA

提取码: e2ht

cocos教程 极客学院Cocos2d-x源码 05_第5阶段 项目实战 04_第4阶段 功能扩展 03_第3阶段 常用功能 02_第2阶段 基础知识 01_第1阶段 环境搭建 5 使用Eclipse在Ubuntu下搭建Cocos2d-x 3集成开发环境 4 Cocos Code IDE使用 3 Windows环境下Visual Studio 2013中搭建Cocos2d-x 3.1集成开发环境 2 Cocos2d-x3.1rc0项目创建及新功能介绍 1 WinMac环境Cocos2d-x开发环境搭建 06. HelloWorld示例详解.webm 05. 在Mac平台编译成Android程序.webm 04. Mac平台开发环境搭建.webm


热点内容
动态规划01背包算法 发布:2024-11-05 22:17:40 浏览:849
nasm编译器如何安装 发布:2024-11-05 22:01:13 浏览:180
登录密码在微信的哪里 发布:2024-11-05 22:00:29 浏览:739
c防止反编译工具 发布:2024-11-05 21:56:14 浏览:247
安卓虚拟机怎么用 发布:2024-11-05 21:52:48 浏览:344
php时间搜索 发布:2024-11-05 20:58:36 浏览:478
燕山大学编译原理期末考试题 发布:2024-11-05 20:13:54 浏览:527
华为电脑出现临时服务器 发布:2024-11-05 20:05:08 浏览:408
斗战神免费挖矿脚本 发布:2024-11-05 19:53:25 浏览:665
网吧服务器分别是什么 发布:2024-11-05 19:45:32 浏览:392