原文:https://doc.babylonjs.com/how_to/page2

创建一个项目

首先你需要设置你项目的位置。

  1. 创建一个文件夹用来存储你的项目文件

  2. 在根目录中新建以下文件夹:

    • dist
    • public
    • src
  3. 主要文件

    • 进入src文件夹并创建app.ts文件

    • 进入public文件夹并创建index.html文件

    • 你的html文件应该看起来像这样:

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>Title of Your Project</title>
      </head>
      <body>
      </body>
      </html>

      注意当前我们的html body里面啥也没有,后面我们会在app.ts文件中创建一个画布。

安装Babylon.js

  1. 生成package.json文件

    npm init

    您可以立即填写这些内容,也可以继续按Enter并稍后将其填写在package.json中

  2. 在项目根路径下,打开终端

  3. 安装Babylon.js

    npm install --save-dev @babylonjs/core
    npm install -场景-save-dev @babylonjs/inspector

    这将安装你需要的所有babylon依赖项

  4. Typescript支持

    tsc --init

    这会创建一个默认的tsconfig.json文件,你可以用以下内容覆盖它:

    {
    "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "noResolve": false,
    "noImplicitAny": false,
    "sourceMap": true,
    "preserveConstEnums":true,
    "lib": [
    "dom",
    "es6"
    ],
    "rootDir": "src"
    }
    }

设置webpack

安装依赖

现在我们有一个生成的package.json文件,我们需要安装使用webpack的开发依赖。

npm install --save-dev typescript webpack ts-loader webpack-cli

如果失败了多试几次。

配置webpack

现在我们需要配置webpack来确定要做什么。在项目根目录中创建一个`webpack.config.js文件,该例子的配置看起来如下:

const path = require("path");
const fs = require('fs');
const appDirectory = fs.realpathSync(process.cwd()); module.exports = {
entry: path.resolve(appDirectory, "src/app.ts"), //path to the main .ts file
output: {
filename: 'js/bundleName.js' //name for the javascript file that is created/compiled in memory
},
resolve: {
extensions: [".tsx", ".ts", ".js"]
},
module: {
rules: [
{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/
},
]
},
mode: "development"
};

插件

另外,我们安装一些帮助我们在本地运行更新,和清理捆绑内容。

npm install --save-dev html-webpack-plugin
npm install --save-dev clean-webpack-plugin
npm install --save-dev webpack-dev-server

安装完这些东西,我们需要将它们添加到webpack.config.js文件中,添加完的webpack.config.js如下:

const path = require("path");
const fs = require('fs');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const appDirectory = fs.realpathSync(process.cwd()); module.exports = {
entry: path.resolve(appDirectory, "src/app.ts"), //path to the main .ts file
output: {
filename: 'js/bundleName.js' //name for the js file that is created/compiled in memory
},
resolve: {
extensions: [".tsx", ".ts", ".js"]
},
devServer: {
host: '0.0.0.0',
port: 8080, //port that we're using for local host (localhost:8080)
disableHostCheck: true,
contentBase: path.resolve(appDirectory, "public"), //tells webpack to serve from the public folder
publicPath: '/',
hot: true
},
module: {
rules: [
{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/
},
]
},
plugins: [
new HtmlWebpackPlugin({
inject: true,
template: path.resolve(appDirectory, "public/index.html")
}),
new CleanWebpackPlugin()
],
mode: "development"
};

现在我们构建并运行项目时,如果作了什么修改,浏览器都会自动刷新使我们马上看到变化。另外,HTML Webpack插件正在获取已编译的javascript捆绑文件,并将其注入到我们的index.html文件中,该.js捆绑包将显示在dist文件夹内。

创建场景

我们将app.ts作为我们项目的主要入口点。

设置并创建App类

App类将作为我们整个游戏应用

这是一个非常简单的示例,说明如何设置场景,应将其分为不同的功能,并在项目进行过程中使用类变量,

app.ts

import "@babylonjs/core/Debug/debugLayer";
import "@babylonjs/inspector";
import "@babylonjs/loaders/glTF";
import { Engine, Scene, ArcRotateCamera, Vector3, HemisphericLight, Mesh, MeshBuilder } from "@babylonjs/core"; class App {
constructor() {
// create the canvas html element and attach it to the webpage
var canvas = document.createElement("canvas");
canvas.style.width = "100%";
canvas.style.height = "100%";
canvas.id = "gameCanvas";
document.body.appendChild(canvas); // initialize babylon scene and engine
var engine = new Engine(canvas, true);
var scene = new Scene(engine); var camera: ArcRotateCamera = new ArcRotateCamera("Camera", Math.PI / 2, Math.PI / 2, 2, Vector3.Zero(), scene);
camera.attachControl(canvas, true);
var light1: HemisphericLight = new HemisphericLight("light1", new Vector3(1, 1, 0), scene);
var sphere: Mesh = MeshBuilder.CreateSphere("sphere", { diameter: 1 }, scene); // hide/show the Inspector
window.addEventListener("keydown", (ev) => {
// Shift+Ctrl+Alt+I
if (ev.shiftKey && ev.ctrlKey && ev.altKey && ev.keyCode === 73) {
if (scene.debugLayer.isVisible()) {
scene.debugLayer.hide();
} else {
scene.debugLayer.show();
}
}
}); // run the main render loop
engine.runRenderLoop(() => {
scene.render();
});
}
}
new App();

捆绑项目并在本地运行

现在我们的项目已经设置好了,怎么在本地运行呢?我们需要在package.json文件中配置任务,在你的package.json文件中,用下面代码覆盖"scripts":

    "scripts": {
"build": "webpack",
"start": "webpack-dev-server --port 8080"
},

现在我们需要做的是:

npm run build
npm run start

然后打开浏览器浏览localhost:8080,你会看到一个球。

快速搭建基于webpack的babylon.js开发手脚架的更多相关文章

  1. 基于webpack的Vue.js开发环境快速搭建

    1. 安装node node下载地址 2. 安装淘宝 NPM npm 是node.js 的包管理工具. 镜像命令地址 #命令行: npm install -g cnpm 3. 安装vue # 全局安装 ...

  2. 利用yeoman快速搭建React+webpack+es6脚手架

    自从前后端开始分离之后,前端项目工程化也显得越来越重要了,之前写过一篇搭建基于Angular+Requirejs+Grunt的前端项目教程,有兴趣的可以点这里去看 但是有些项目可以使用这种方式,但有些 ...

  3. 基于 Laravel、Vue.js开发的全新社交系统----ThinkSNS+

    什么是ThinkSNS+ ThinkSNS(简称TS)始于2008年,一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+.新的产品名 ...

  4. 从零搭建基于webpack的Electron-Vue3项目(1)——基于webpack的Vue3项目搭建

    从零搭建基于webpack的Electron-Vue3项目(1)--基于webpack的Vue3项目搭建 前言 本篇文章内容,主要是基于webpack的Vue3项目开发环境进行搭建,暂时还不涉及到El ...

  5. 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML(转)

    1.什么是工程化开发 软件工程的工程化开发概念由来已久,但对于前端开发来说,我们没有像VS或者eclipse这样量身打造的IDE,因为在大多数人眼中,前端代码无需编译,因此只要一个浏览器来运行调试就行 ...

  6. 基于webpack的前端工程化开发解决方案探索(二):代码分割与图片加载

    今天我们继续来进行webpack工程化开发的探索! 首先来验证上一篇文章   基于webpack的前端工程化开发解决方案探索(一):动态生成HTML  中的遗留问题:webpack将如何处理按需加载的 ...

  7. 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载

    koahub-loader koahub-loader是基于 Koa平台Node.js开发的KoaHub.js的koahub-loader控制器,模型,帮助方法自动加载 koahub loader I ...

  8. 基于webpack和vue.js搭建开发环境

    前言 在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会改变你自己.秉承着“不听老人言,吃亏在眼前”的优良作风,我还是决定玩火自焚. ...

  9. 基于 Koa平台Node.js开发的KoaHub.js连接打印机的代码

    最近好多小伙伴都在做微信商城的项目,那就给大家分享一个基于 Koa.js 平台的 Node.js web 开发的框架连接微信易联云打印机接口的代码,供大家学习.koahub-yilianyun 微信易 ...

  10. heX——基于 HTML5 和 Node.JS 开发桌面应用

    heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...

随机推荐

  1. 无锁并发,CAS等

    Unsafe

  2. mysql sum 聚合计算后精度不准 出现多位小数点后的数

    解决办法 原收款单money 字段 为 decimal(28,8) 经过层层计算用到了 @total := ( beginning + @total + gather - verification ) ...

  3. Redux Toolkit——基操

    redux-toolkit是redux的升级版 安装 npm install @reduxjs/toolkit // 在react中还需要搭配react-redux使用 npm install rea ...

  4. win10输入法微软拼音被禁用

    远程桌面到win10系统后,再次回到被远程的win10,会发现输入法被禁用,无法输入汉字无法切换输入法只能使用英文输入 方法1 可以把相关的应用程序关闭后重新打开(不实用) 方法2 任务计划,micr ...

  5. python自动化模块及运维工具

    1. psutil 可以获取系统运行的进程和系统利用率(CPU 内存-)信息 import psutil 2. IPy 是python 第三方处理IP地址模块 from IPy import IP 3 ...

  6. 下载base64图片

    下载 this.downloadFile('二维码',that.img64) downloadFile(fileName, content) { let aLink = document.create ...

  7. js 浮点数加、减、乘、除。

    1.浮点数加法运算 function numAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split("." ...

  8. matlab求解器的选择

    可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情况下,具有状态的系统用的是ode45:没有状态的系统用的是discrete. 1)od ...

  9. notepad++ 编写html代码快捷键切换到浏览器查看

    1.右键chrome属性,查看目标C:\Users\duanx\AppData\Local\Google\Chrome\Application\chrome.exe 2.然后notepad运行,输入如 ...

  10. 清理缓存tc

    /$SYNC 今天修改自建表的字段,换了参考字段但是SE16N显示一直没有改变,删字段,删表都尝试依旧无果,实际上只是没有清理缓存,扑街,留存