Babylon.js学习笔记

编辑器

http://editor.babylonjs.com/

跟Unity还是差的太远了

跨端

基于React Native实现的跨平台。

框架功能

可能是我不了解,感觉这个设计没Unity的好理解和易用,甚至还不如Phaser

资源加载、loading进度、状态管理

Agent这个类有点像Element?

用户输入Input需要自己写,感觉还是不够开箱即用、不够效率。

Tick机制

需要的类里面,有个tick()方法:

1
public tick(deltaTime: number): void

State的设计

比如Victory、Dead都是State

State有个enter()和exit()方法

内部集成工具

将一些常用的功能集成为框架的可选插件包了,比如:

1
2
3
4
5
6
7
8
9
10
11
12
"dependencies": {
"@babylonjs/core": "5.3.0",
"@babylonjs/gui": "5.3.0",
"@babylonjs/loaders": "5.3.0",
"@babylonjs/materials": "5.3.0",
"@babylonjs/post-processes": "5.3.0",
"@babylonjs/procedural-textures": "5.3.0",
"@babylonjs/serializers": "5.3.0",
"ammojs-typed": "^1.0.6",
"cannon-es": "^0.18.0",
"earcut": "^2.2.3"
}

常用代码片段

加载模型

存放在线模型的方法:

Babylonjs Playground中动态加载自己的glb gltf模型(github、dropbox)_maki077的博客-CSDN博客_babylon 加载模型

加载模型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var delayCreateScene = function () {

var scene = new BABYLON.Scene(engine);

BABYLON.SceneLoader.ImportMesh(
"",
"https://dl.dropboxusercontent.com/s/5exd7si1f1xusi2/",
"car.glb",
scene,
function (meshes) {
scene.createDefaultCameraOrLight(true, true, true);
scene.createDefaultEnvironment();
}
);

return scene;
};

我的测试demo:

Babylon.js Playground

案例

FPS游戏

renjianfeng (蔬菜土豆泥) · GitHub

《loacl war》Migrating to Babylon.js4.0 - YouTube

Babylon.js的介绍

虚拟展厅

Babylon.js - Glowing Espilit demo

Babylon.js Playground

工具

模型预览:

https://sandbox.babylonjs.com/

牛人

蔬菜土豆泥的个人空间-蔬菜土豆泥个人主页-哔哩哔哩视频