當前位置:首頁 » 操作系統 » 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


熱點內容
消滅病毒三百關後用什麼伺服器 發布:2024-10-04 00:57:56 瀏覽:479
什麼叫php 發布:2024-10-04 00:57:23 瀏覽:30
如何製作ftp伺服器 發布:2024-10-04 00:49:33 瀏覽:582
androidfragment選項卡 發布:2024-10-04 00:38:03 瀏覽:365
和平精英如何用密碼登錄安卓 發布:2024-10-04 00:27:44 瀏覽:904
安卓手機資料怎麼上傳電腦 發布:2024-10-04 00:18:42 瀏覽:312
led燈編程 發布:2024-10-03 23:59:25 瀏覽:157
怎麼改建行卡密碼 發布:2024-10-03 23:39:03 瀏覽:915
優盤加密解除 發布:2024-10-03 23:29:09 瀏覽:652
讀書郎雙清密碼是多少 發布:2024-10-03 23:23:52 瀏覽:118