
Defold是一款高性能跨平台游戏引擎,跨平台(PlayStation/Switch/Android/iOS/macOS/Linux/Windows/Steam/HTML5/Facebook/XBox即将),号称永久免费。
从官网来看,资料还是比较丰富的,虽然多数为英文。

关于轻量高性能的比较表,在各平台上,与其它两个大平台的导出文件大小。在之前的Godot项目中,特别是对于H5页面,太大了。
| 平台 | DEFOLD 1.9.3 | UNITY 6 (6000.0.23f1) | GODOT 4.3 |
|---|---|---|---|
| Android (arm64-v8a) | 1.83MB | 24.33MB | 24.29MB |
| iOS (arm64) | 1.41MB | 18.03MB | 19.59MB |
| HTML5 (wasm, gzip) | 1.4MB | 8.1MB | 9.0MB |
| Windows | 8.1MB | 91.1MB | 84.1MB |
从使用来看,确实是比较小巧。如果能导出的是单独一个文件就更“绿色”了。

左方为Win,右方为H5

Win下57MB;H5下20MB;Ubuntu下,占用13MB,64位安卓占用10MB。
导出安卓版本
它导出安卓版本确实很简单,不象有些软件要安装安卓那一堆东西。
Project-Bundle-Android Application,Keysore选择证书文件,KeystorePassword选择证书密码的文本文件。
PS生成证书例如:keytool -genkey -v -noprompt -dname “CN=John Smith, OU=Area 51, O=US Air Force, L=Unknown, ST=Nevada, C=US” -keystore mykeystore.keystore -storepass 5Up3r_53cR3t -alias myAlias -keyalg RS.A -validity 9125

脚本参数

在示例Basics Z-order中,添加脚本参数及设置
本示例主要是观察Position.z参数不同,引起的对象的z轴变化。
在集合logo下添加脚本 main.script,对两个对象脚本参数x进行设置
function init(self)
go.set("/spaceship1#script","x",100)
go.set("/spaceship2#script","x",600)
end
原z_order.script稍作修改
go.property("x", 600) -- 设置一个脚本参数
function init(self)
go.animate(".", "position.x", go.PLAYBACK_LOOP_PINGPONG, self.x, go.EASING_INOUTSINE, 3) -- <1>
end
即实现了脚本参数及脚本设置参数。此参数也可以通过属性进行直接修改。
示例:Tween animations chain 补间动画链
https://defold.com/examples/animation/chained_tween/
local up_down -- <1>
local left_right
function up_down(self) -- <2>
go.animate(".", "position.y", go.PLAYBACK_ONCE_PINGPONG, 624, go.EASING_INOUTSINE, 2, 0, left_right)
end
function left_right(self) -- <3>
go.animate(".", "position.x", go.PLAYBACK_ONCE_PINGPONG, 660, go.EASING_INOUTSINE, 2, 0, up_down)
end
function init(self)
up_down(self) -- <4>
-- go.animate(".", "scale.y", go.PLAYBACK_LOOP_PINGPONG, 0.5, go.EASING_INOUTSINE, 1) -- <5>
-- go.animate("#sprite", "tint.x", go.PLAYBACK_LOOP_PINGPONG, 0.0, go.EASING_INOUTSINE, 1.5) -- <6>
end
--[[
1. 在Lua中,必须在使用之前声明局部变量。由于函数`up_down()`和`left_right()`相互引用,我们在函数定义之前“提前声明”了名称`up_down`和`left_right`。
2. 此函数动画化游戏对象位置的y分量,然后在完成时调用函数`left_right()`。
3. 此函数动画化游戏对象位置的x分量,然后在完成时调用函数`up_down()`。
4. 首先调用`up_down()`函数。
5. 同时,渐变缩放的y分量。
6. 以及精灵的色调x分量(即红色值)。
--]]
此示例学到的两点:1.动画是并行的(init函数可以看出5.6两个效果同时运行了) 2.定义之前调用,可以先申明(虽然我注释了第1和2行,并没有影响运行)
打赏