Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 19

Contents

Xương máu.................................................................................................................................................2
Mindset.......................................................................................................................................................2
Convention..................................................................................................................................................2
Di chuyển....................................................................................................................................................3
Things..........................................................................................................................................................4
Tùy biến.....................................................................................................................................................11
Script (Code) – Shift + Alt + F để làm đẹp code........................................................................................12
Nâng cao...................................................................................................................................................17
Deprecated API.....................................................................................................................................17
Đọc source.............................................................................................................................................18
index.ejs................................................................................................................................................18
window..................................................................................................................................................18
Chụp màn hình......................................................................................................................................18
Xương máu
cc.log k ra -> Chỉnh Debug Mod thành Info

FRAME_OUT.. -> Khi run game bị dừng ở splash screen của cocos, k vào game dc -> Update window.

Forum hỏi đáp: discuss.cocos2d-x.org/c/creator

Tránh copy 1 đống resource vào asset -> McAfee nó nghi ngờ virus.

Đối vs các animated object thì xét collider kiểu gì?

- Thuật toán play animation khi di chuyển player.


- Thuật toán tìm vị trí spawn bomb thích hợp.
1. Vụ đè đầu
2. Animated/Kinematic thì đi xuyên Static, còn Dynamic thì nó đẩy bay đi xa
 Để Dynamic thì lâu lâu nó đi xuyên luôn.
3. Cách chỉnh property của các key frame sprite? Lúc animation quay ngang bị kẹt cái đầu, k chui
khe dc.
4. Nhấn Space là bị khựng player.

Anh Hùng nói player có rigidbody là dc rồi, các block obstacles chỉ cần có collider thôi.

[Lắc Thần Tài - IOS] Lần lắc đầu tiên lúc mới bật game Thần Tài bị vượt quá biên độ -> di chuyển chậm
rì 1 lúc cho tới khi vào lại biên độ thì mới bình thường lại.

- Solution: clamp thằng z của Thần Tài để nó luôn thuộc đoạn [-amplitude; amplitude].
- Cause: nghi là do deltaTime trên ios khác android, android thì render đều đều (ngay cả khi
sprite Thần Tài đứng yên), ios thì deltaTime sẽ tính từ lúc sprite Thần Tài đứng yên cho tới khi
nó thay đổi (chuyển động) -> deltaTime đầu sẽ rất lớn -> z bị + lố -> vượt biên độ 1 khúc.

Mindset
- Muốn đọc chi tiết về component cc nào đó thì vào docs search <Tên component> + “component
reference”.
- Muốn tìm api của thằng nào đó thì console.log thằng đó ra, rồi xem kết quả, rồi gọi, chứ docs
viết sơ sài.

Convention
http://docs.cocos.com/creator/manual/en/scripting/reference/coding-standards.html

https://giasutamtaiduc.com/cong-thuc-osascomp.html

- Node, Prefab, Script: PascalCase.


- Còn lại: here-we-go.
- Biến, hàm: camelCase.
- Type, module: PascalCase.
- Hằng: SNAKE_CASE_BUT_ALL_ARE_UPPERCASE
- private _bombAmount: number;
- var obj = Object.create(null);
- var array = [];
- exampleString = ‘Better use single quotation mark’;
- Nếu string quá dài, dùng “+”.
- ===, !== thay vì ==, !=.
- howAFunctionLookLike() {
}
- // space before each comment.

Di chuyển
- Giống Unity.
Phím tắt (Cocos Creator -> Shortcuts)
- Đè shift + click item đầu + click item cuối: Chọn 1 dãy node.

- W – Move Gizmo: move.


- E – Rotate Gizmo: rotate.
- R – Scale Gizmo: scale = cách nắm trục kéo.
- T – Rect Gizmo: scale = cách nắm góc kéo giống kéo ảnh.

- Muốn mỗi khi mình sử dụng và drag các gizmo bên trên, offset cố định thì vào đây tick vô gizmo
tương ứng. (Bên Unity phím tắt là Ctrl + drag)
- Alt + click: lock cả cha lẫn con
Things
Inspector

- Mỗi dòng nho nhỏ như này gọi là property

- Mỗi component chứa 1 or nhiều property

o Cái dấu tick đó cũng là 1 property, gọi là “enabled property”


- Mỗi node (game object) chứa 1 or nhiều component.
o Dấu tick của node gọi là “activate property”

Node (tương ứng với game object bên Unity)

- Là bất kỳ objects nào trong game


o Vd: Map, player, camera, weapon,..
- Các property cơ bản
o Position
o Rotation
o Scale
o Layer
- Muốn thêm gì thì Add Component như Unity.
- Xoay theo x y z dùng:

Script

cc.Sprite

- Là các item có visual component.


o Vd: background, floor,..
- Muốn tạo sprite, đơn giản nhất cứ kéo mẹ *.png vào panel Scene.

spriteFrame

- Cẩn thận khi xài spriteFrame.width/height, vì khi nó dc pack thành dynamic atlas thì width & height
của nó sẽ là width & height của tấm atlas đó luôn (2048 x 2048).

Asset

- Scenes, prefabs, scripts, sprites, sound,..


Material

- Dùng để làm “Skin” của object (node).


- Muốn add material vào node thì add component MeshRenderer vào node, xong kéo material vào
“Materials” của component này.
- Nếu node k hiển thị skin tức là bị mất material, xem link.

Texture

- texture size nên <= 2048, lớn hơn có một số phone ko load lên gpu dc.
- 1 tấm ảnh để dán lên material.
o Click vào material.
o Tick ô USE ALBEDO…
o Kéo texture vào.

Prefab

- Giống Unity và có dạng 3 hộp vuông xếp chồng nhau.


- 2 cái ngoài cùng

-
o Reset from prefab: reset các thông số của node về thông số gốc của prefab
o Update prefab asset: apply các thông số của node lên prefab -> các anh em của nó cũng sẽ
bị đổi theo.
-

// [LEARN] Error relate to context because BubbleController below doesn't attach


to the node we want
// Mindset: should go from object -> component, not component -> object
// this.matrix[i][j] = new BubbleController();
// this.matrix[i][j].node = instantiate(this.bubblePrefab); // Now there are 2
instances of BubbleController(), why? Think about it!
// this.matrix[i][j].node.parent = this.bubbleMap;
-

Life cycle callback – link


- onLoad(): execute KHI NODE ACTIVE LẦN ĐẦU TIÊN (nếu khởi tạo từ prefab có active = false thì dù
khởi tạo xong rồi onLoad cũng k chạy).
- onEnable(): dc gọi khi component được enable.
- onDisable(): dc gọi khi component bị disable.
- start(): execute sau onEnable, dc gọi DUY NHẤT 1 LẦN khi component được khởi tạo thành 1
instance.
- update(): execute ở mỗi frame (tần suất execute khác nhau ở mỗi máy, tùy thuộc vào tốc độ render
của máy).
o Nó chạy từ khi Cocos còn đang trong màn hình loading cơ.
- lateUpdate(): giống update, execute sau update.
- onDestroy(): dc gọi khi component bị destroy.

- Lưu ý:
o Node active = false thì chỉ có các life cycle funcs k hoạt động. Còn lại các method
khác hđ bth.
o Vd trong script có hàm được gọi từ bên ngoài, trường hợp
nó execute trước cả onLoad() của script HOÀN TOÀN CÓ THỂ XẢY RA. Nếu log ra coi thử sẽ
thấy node mà nó dc gắn vào đã dc instantiate hoàn tất rồi, nhưng onLoad() vẫn chưa chạy
tới.
Light

- Directional light:
o Illuminance – độ rọi: số càng to, chiếu càng sáng.
- Sphere light:
o Size: bán kính của hình cầu (màu trắng) có tâm là nguồn sáng.
o Range: bán kính của hình cầu (màu vàng) có tâm là nguồn sáng, là khoảng cách tối đa mà
ánh sáng chiếu tới.
 Điều chỉnh 2 cái này để ra dc Luminous flux (tổng lượng ánh sáng phát ra từ một nguồn sáng) phù
hợp (nhìn vừa mắt là dc)
- Spotlight: giống sphere light nhưng có thêm angle
o Angle: độ rộng của chum tia từ đèn pin.

cc.UITransform

- AnchorPoint(x, y) – điểm neo: với x có đơn vị là % chiều rộng của node, y có đơn vị là % chiều dài
của node
o Vd: Mặc định AnchorPoint(0.5, 0.5) – tức trục Oxy đứng yên, node di chuyển qua trái 50%
chiều rộng, 50% chiều dài -> Khi này gốc tọa độ O nằm tại tâm của node.
o Mặc định các gizmo move, rotate,.. ở chế độ Pivot- tức lấy tâm là anchor point của node.
Nếu muốn lấy tâm dịch chuyển là trọng tâm của node -> Chỉnh qua Center.

cc.Camera

- Muốn camera view nó fit với canvas thì chỉnh OrthoHeight (chiều cao khung hình ở chế độ trực giao)
= height của canvas.

cc.Widget

- Dùng để align/stretch object này với parent của nó.

Label

- Chỉnh Overflow về NONE để nó reset size của cái khung text.

Particle System

- Dùng particle 3D trong project 2D thì nhớ


o Project Settings -> Feature crop -> 3D -> Tick Particle system, nếu k nó sẽ k show và báo lỗi lạ
khi run game.
o Thêm component UIMeshRenderer để nó render 3D sang texture (dùng để show 3D trong
project 2D).
- TextureAnimationModule:
o NumTilesX = n: theo chiều ngang, chia spritesheet thành n ô bằng nhau.
o NumTilesY = n : theo chiều dọc, chia spritesheet thành n ô bằng nhau.

o
- Material:
o Effect: dùng effect builtin-particle/builtin-particle-gpu (tùy vào ô render GPU bên particle có
tick hay k).
o Technique: từ 0-4 mỗi cái có 1 kiểu visual riêng, tự trải nghiệm đi, mà thường hay xài cái 1.
- Render:
o Billboard: texture của các hạt trong particle system luôn hướng về camera.

Node event

- Lưu ý layer của node, UI_2D thì camera nó mới thấy node và node mới nhận trigger dc.
o Có thể vào Visibility của cc.Camera -> tick thêm DEFAULT để camera nó render cả các node ở
layer DEFAULT.

Auto atlas

- Giảm size hình, thời gian load, thời gian cache lên memory, giảm drawcall (do nó dồn nhiều hình vào
1 file rồi nên thay vì mỗi hình lẻ nó đẩy 1 lần lên gpu ~ 1 drawcall, thì sau khi dồn chỉ cần đẩy 1 lần
thôi).
- Sau khi built nó mới works, chứ bth run từ engine thì no effect (muốn biết thì F12 qua Mạng xem coi
các resource nó load là thấy).
- Chia atlas thông minh lên, vd chia theo màn hình hoặc feature, hoặc bundle.
- Tốt nhất là 1024x2048 (1 số device chỉ hỗ trợ tới 2048 thôi).
- Nên tick vào Power of Two.
- useCompressTexture?
- “Edit presets”
- Mối liên quan giữa material và drawcall?

Sprite Editor

- SLICED.
- Kéo 9 ô sao đó cho nó tối ưu.

Build

- web mobile.
- potrait.
- Config cái logo, để loading time = 0.

Tween

- Khái niệm: “Khi muốn thay đổi một giá trị trong một khoảng thời gian nhất định, với itween bạn chỉ
cần đưa các tham số đầu vào(giá trị đầu, giá trị cuối – mong muốn) cùng với khoảng thời gian để
thay đổi, việc tạo hiệu ứng sẽ hoàn toàn được Itween thực hiện trong đúng khoảng thời gian đó.”
- Docs ghi hết r nên cứ đọc kĩ vào:
o https://docs.cocos.com/creator/manual/en/scripting/tween.html
o https://docs.cocos.com/creator/manual/en/tween/
o https://docs.cocos.com/creator/2.4/api/en/classes/Tween.html#repeat
- Lưu ý sau mỗi “.” đều là 1 tween (Vd: .call(), .to(), .repeat(),..), hiểu kĩ cái này để sử dụng .union()
+ .call() + repeatForever() hiệu quả. Như ở đây nếu k có .union() thì mọi thứ sẽ khác vcl.
-

 Distance với velocity trong cái to k thay đổi, dù đã call().

Layout

- Chú ý ResizeMode: CONTAINER, khi xài cái này có thể sẽ bị chớp do thằng cha nó giãn ra để contains
dc hết đám childnode
 Chỉnh anchor point lại.
- Grid layout bị ngu: Khi fetch image thì hình giãn to -> bể layout, nhưng khi scale hình nhỏ lại layout
nó k update. Nên phải cheat bằng cách này

Tùy biến
Camera

- Khi mới tạo project nó sẽ cho mình sẵn 1 cái Main Camera trong scene, kệ thằng camera này đi, khi
mình kéo sprite vào panel Scene nó sẽ tự sinh ra 1 cái Canvas bên Hierarchy cho mình, trong Canvas
này có 1 Camera chỉa vuông góc xuống mặt phẳng canvas -> Sau đó làm game 2D thì cứ tương tác
trong cái canvas này thôi.

Game background

- Kéo ảnh vào panel Scene để tạo sprite, sau đó scale nó lên (2, 2, 2) để nó fit với cả các device có kích
thước màn hình to.

Di chuyển nhân vật bằng key event

- onKeyUp(..) và on onKeyDown(..) đóng vai trò thay đổi các flag thôi.
- Sau đó trong update(..) sẽ nhìn vào giá trị các flag đó mà thực hiện + - position của nhân vật (nhớ *
deltaTime để tốc độ di chuyển ở mọi cấu hình máy giống nhau).

Health bar (Progress bar)


- https://www.youtube.com/watch?v=BLfNP4Sc_iA&t=492s&ab_channel=Brackeys
- Gồm HealthBar (empty node) chứa 2 node con:
o Fill - lượng máu
 SpriteSlash
 cc.Widget để nó stretch ra theo thằng cha nó, và margin các thứ.
 cc.ProgressBar: Bốc thằng Fill bỏ vào BarSprite, lúc này khi kéo thanh Progress nó sẽ
tự thay đổi ContentSize trong cc.UITransform của Fill.
o Border - viền thanh máu
 cc.Sprite
 cc.Widget
- Có thể dùng FILLED trong Type của cc.Sprite để làm.

Responsive UI

- Để cc.Widget hoạt động dc thì chỉ dc tick fit width or fit height.
- Đọc https://docs.cocos.com/creator/manual/en/ui-system/components/engine/multi-
resolution.html?h=fit%20width
- Fit width/fit height:
o Nếu real resolution có tỉ lệ width:height giống canvas thì quá ok, k vấn đề gì.
o Nếu khác tỉ lệ, ví dụ fit width dc tick, thì canvas sẽ zoom in (enlarge scene)/zoom out để khít
với width của real resolution.
o Fit height: dùng khi tỉ lệ ngang:dọc của real < design, fit width: ngược lại.

Optimize game

- Auto atlas.
- Giảm size asset.
- Sprite editor.
- Config build.
o Tick vào replace slashscreen + chỉnh loading time từ 3000 -> 0 + thêm logo path.
- Asset bundle.
o Remote bundle: Sau khi build sẽ gen ra cục remote bundle -> cục này sẽ dc quăng lên cdn,
sau này cần dùng tới thì dùng code gọi load từ remote xuống.
 Thường quăng sound vào remote bundle, do k có cách nào xịn hẳn để giảm size của
nó.
- Load làm sao cho thông minh.
o Kiểu như, load và show màn hình quan trọng lên trước, sau đó trong lúc user nó đang định
hình (or đọc tutorial) thì mình load nốt các màn hình còn lại.
- Recache của Cocos????

Cách giảm dung lượng của singlefile khi build

- Resize images về đúng design size, không dư, không thiếu + compress images.
https://www.iloveimg.com/
- Project Settings -> Feature crop -> Từ trên xuống dưới cái nào k xài bỏ tick hết.
- Dùng auto atlas 1 cách thông minh (đọc kĩ docs), dùng ngu là tăng dung lượng.
Game mananager

- Thường là entry point của scene.


- Quản lý tất cả từ đầu vô cho tới đầu ra luôn.

Script (Code) – Shift + Alt + F để làm đẹp code


@property({type: …})

- Dùng để serialize object – tức lưu object này vào đâu đó để sau này lấy ra xài lại.
- Nói trắng ra là để cái biến đó nó xuất hiện trong Cocos Creator để mình chỉnh giá trị trực tiếp luôn
(như public class member bên Unity vậy).
- Đọc https://docs.cocos.com/creator/manual/en/scripting/decorator.html

this.node

- Gọi ra dc các attributes cơ bản của node: .position, .angle (rotation), .scale, .layer.
- this.node.parent: lấy parent của nó trong Hierarchy.
- This.node.on

Node System Events – mouse, touch

- Đọc từ docs ngắn gọn, dễ hiểu.


- This.node.on(type of event, callbackFunction(), ?target)
o Type of event: Dùng string dc, nhưng tốt nhất nên dùng enumeration.
o callbackFunction(): hàm được gọi ghi event bị trigger.
o Target: nếu trong callbackFunction() có dùng tới syntax “this”, thì truyền object vào để hàm
callback kia nó biết nên gọi tới attributes của object nào. Nếu k truyền, mặc định nó trỏ tới
object đang execute hàm callback.
this.node.on(Node.EventType.MOUSE_DOWN, function ( event ) {
this.enabled = false;
}.bind(this));
- Khỏi dùng bind cũng dc, lí do thì ở trên nói rồi.
- Nhớ cancel khi không xài nữa (hoặc dùng once thay cho on thì khỏi cancle):

- DKY Ở onEnable(), CANCEL Ở onDisable()? – trong doc example nó làm vậy.

Global System Events – mouse, touch, keyboard, device motion

- Giống ở trên, nhưng thay “this.node” = “systemEvent”


- DKY Ở onLoad(), CANCEL Ở onDestroy()? – trong doc example nó làm vậy.
- Keyboard event:

systemEvent.on(SystemEvent.EventType.KEY_DOWN, this.checkKeyDown, this);

o Sau khi dky ở onLoad(), implement hàm checkKeyDown để xem người ta gõ phím gì -> thực
hiện hành động mình muốn.
o checkKeyDown:

Scene

- director.preloadScene(“Scene1”, function() {…}): nạp scene trong thầm lặng ở background.


- director.loadScene(“Scene1”): load scene xong sau đó chuyển game sang scene mới (chứ k nhất
thiết phải gọi preloadScene).
 2 thằng này nằm khác script thì vẫn chạy dc bth.

Pause/Resume game

- Trong docs version 3.3 k thấy có game.pause()/.resume()


Sound

Animation (link này bấm từ panel animation ra, kiếm trong docs.cocos.com k có)

- Khái niệm: animation ở đây dc hiểu là đoạn phim quay lại sự thay đổi TRÊN TỪNG PROPERTY. Sự
thay đổi này được biểu thị qua các cột mốc (trạng thái) gọi là key frame. Animation có thể trình
chiếu 1 property, hoặc nhiều property cùng lúc.
o Vd: Muốn tạo animation character walking -> Cần quay lại sự thay đổi về tư thế của sprite
Character (property cc.spriteFrame) -> Cần 1 chuỗi các ảnh png nối liền nhau để miêu tả
hành động -> Mỗi ảnh png là 1 cột mốc (key frame).
 Nếu đống png có size giống nhau mà khi vào key frame có vài cái giãn ra thì
cc.Sprite -> SizeMode = TRIMMED CUSTOM.
 Lí do: nếu nhìn kĩ các png sẽ có max width và max height khác nhau (ví dụ
character đang đưa tay ra -> width rộng hơn), nếu để CUSTOM nó sẽ auto
scale tất cả png sao cho khớp với 1 size duy nhất.
- Cơ bản:
o Add Component “Animation” vào node.
o Bấm dấu + bên assets, tạo file animation clip.
o Kéo file vừa tạo vào phần clip của component kia.
- Trong Property List, data của mỗi property chính là đám key frames trên Timeline.
o Các property có thể add vào list để tạo animation gồm
 4 property cơ bản của node.
 Các property của tất cả components mà cái node đang chứa cc.Animation này sở
hữu.
- Di chuyển:
o Double click vào key frame để thanh timeline move tới đó.
o Nhấn vào chỗ trống rồi kéo lưới để chọn nhiều key frames.
- Tạo key frame:
o Double click vào vị trí muốn add trên timeline cho cây kim time nó nhảy tới đó.
o Thay đổi giá trị của property mà mình đang record, khi này 1 key frame mới sẽ dc add. Or
nhấn vào thanh này rồi tìm giá trị mình cần Or kéo trực tiếp asset vào.

- Scripting:
o this.getComponent(Animation).play();
o Cái này chỉ hoạt động khi đặt từ onEnable trở xuống.
o Methods: play(), crossFade(), pause(), resume(), stop().

cc.{Box/Circle/Pollygon}Collider2D

- Phải đi kèm với component rigidbody (unactivated cũng dc) thì mới detect dc collision.
o Khi collision xảy ra nó tự bật rigidbody lên?
- 1 collider bình thường + unactivated rigidbody va vào 1 collider sensor sẽ k dectect dc collision
o Collider bình thường phải va vào collider khác (để activate rigidbody??) thì mới dc.
- Viền xanh lá.
- Box: viền hình vuông.
- Circle: viền hình tròn.
- Pollygon: viền bao sát sprite.
- Collision matrix: Project Settings -> Physics -> Tạo ma trận để allow thằng nào dc collide với thằng
nào -> Quay lại Inspector -> Chọn group tương ứng cho thằng cc.Collider2D. Add dòng rồi là k xóa dc
đâu.

o Dựa vào group của collider.


- Sensor: collider vẫn works nhưng bỏ qua xử lý physics (object này có thể bị xuyên qua dc).
- Scripting:
o collider.group của DEFAULT = 1 (20), của Tree = 2 (21).

Physics Manager(2D)

- Muốn thằng này works thì node đó phải có cc.Rigidbody2D và cc.Collider2D


PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.All;
RigidBody

- Đối với rigidbody, chỉ có rotate hoặc position thôi, không có scale.
 Để ý vụ scale trong doc nó nói.
- RigidBody không có local coordinate? (Khi đặt nó làm child của A, xong instantiate A từ prefab thì nó
vẫn đứng yên ở world coordinate ban đầu chứ k move theo A).
- 4 loại body:
o Static: m = 0, v = 0, k bị ảnh hưởng bởi lực hoặc trọng lực, có thể set position để move nó.
 Bản thân k detect dc collision.
o Dynamic: có m, có v, có bị ảnh hưởng bởi trọng lực (và lực?).
o Kinematic: m = 0, v tùy ý, k bị ảnh hưởng bởi trọng lực, move = cách set v or set position.
o Animated: kế thừa từ kinematic, dùng cho những thằng rigidbody có animation để tránh nó
đi xuyên vật thể.
- FixedRotation: Để khi va chạm, object của mình k bị xoay ngang xoay dọc.
- AwakeOnLoad: tự động enable component lên khi dc load (dù bị disable bên Inspector).

Contact callback (các hàm dc trigger khi 2 rigidbody va chạm)

- Đọc doc nó chi tiết và dễ hiểu hơn.

Tạo node/Hủy node từ script


- Tạo

- Hủy

Schedule

- Dù set interval bé cỡ nào thì tốc độ chạy nó cũng chỉ nhanh = hàm update() là hết cỡ.

PollygonCollider2D

- Càng nhiều điểm càng nặng -> Tăng threshold rồi Regenerate points để cải thiện.
- Nặng quá sẽ làm game cà giựt.

Asset Manager

- Chứ bth k xài Asset Bundle (và đám code của nó) thì mấy cái load asset từ bundle này nọ nó hoạt
động thế nào?
- Mấy cái code của Asset Bundle chỉ work khi đã build ra rồi hay sao? Hay lúc run từ Cocos nó đã work
rồi?

Load bình thường

- Các asset muốn load = script thì nên tạo folder “resources” và quẳng tụi nó vào trong đó.
- resources.load(…)
- resources.loadDir(…)
- resources.preload(…)
- assetManager.loadRemote(…)

Sử dụng Asset Bundle

Nâng cao
- cc.profiler.showStat(): show stats.

Deprecated API
- Khi update Cocos Creator lên version mới, vd 3.3.1 -> 3.4.2, muốn biết các API nào bị deprecated thì
1. Vào cc.d.ts (D:\Program Files\CocosDashboard_1.0.20\resources\.editors\Creator\3.4.1\
resources\resources\3d\engine\bin\.declarations)
2. Search “@deprecated since v3.4” là ra các API bị deprecated.
3. Ctrl + Click vào các cục deprecated để coi project mình có xài thằng nào trong đó k.
4.

Đọc source
1. Dùng vscode open folder C:\CocosDashboard_1.2.0\resources\.editors\Creator\3.5.1
2. Search tên hàm muốn dò, hoặc search “<name>.ts” (vd: tween.ts)

Các scripts thường dùng:

- Cc.d.ts: declare các syntax mình xài khi implement.


- Base-node.ts + node.ts: implement các hàm của node.
- Vec2/Vec3.ts

index.ejs
- Code trong đây sẽ chạy trước cả những code *.ts

window
- https://openplanning.net/12397/javascript-window

Chụp màn hình


- : Event này dc
bắn mỗi khi vẽ 1 frame => Fps = 60 thì bắn 60 lần/s.

- Do lấy nguyên cái canvas nên lợi dụng việc thay đổi visibility layers của
camera để ẩn hết TẤT CẢ các thứ k cần chụp tới.

- : Tick cái này, k tick thì bị background đen xì.


- Output sẽ dc thế này:

-
- Web dc, device k dc: Tắt cocos đi bật lại + build lại.
- Đọc lại ở game-one nếu cần.

assetManager
- Các lệnh load được nhét vào queue, load xong cái này mới tới cái kia (ref, 3.)

You might also like