(摘) Defold又是一个轻巧的游戏引擎

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

Defold是一款高性能跨平台游戏引擎,跨平台(PlayStation/Switch/Android/iOS/macOS/Linux/Windows/Steam/HTML5/Facebook/XBox即将),号称永久免费。

当前版本 1.10.3 Win版本

从官网来看,资料还是比较丰富的,虽然多数为英文。

关于轻量高性能的比较表,在各平台上,与其它两个大平台的导出文件大小。在之前的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行,并没有影响运行)

相关文章