一、搞编译工具
1.装java
x64 Compressed Archive :下载后直接解压到某个位置,不用安装
x64 installer: 下载后双击安装
注意:不要去百度直接搜Java安装,这样你最多安装java8,而后续的操作需要最新的Android!
2.装cmdline-tools
command-line:https://developer.android.google.cn/studio?hl=zh-cn#command-tools
-
让我们看看godot官方手册的指示:
为 Android 导出 — Godot Engine (4.x) 简体中文文档
-
You can install the Android SDK using Android Studio Hedgehog (version 2023.1.1) or later.
-
运行一次,使用这些说明完成 SDK 设置。
-
Ensure that the required packages are installed as well.
-
Android SDK Platform-Tools version 34.0.0 or later
-
Android SDK Build-Tools version 34.0.0
-
Android SDK Platform 34
-
Android SDK Command-line Tools(最新)
-
CMake 版本 3.10.2.4988404
-
NDK 版本 r23c(23.2.8568313)
-
-
首先,解压下载的cmdline-tool,找到里面的bin目录,如图
之后在这里打开cmd,输入以下命令: sdkmanager --sdk_root=换成你的AndroidSDK路径 "platform-tools" "build-tools;34.0.0" "platforms;android-34" "cmdline-tools;latest" "cmake;3.10.2.4988404" "ndk;23.2.8568313"
稍作等待,一路“Y”下去,你就配置成功了。
二、下载Android模板
Download for Windows – Godot Engine
去官网,找Android 模板下载,建议IDM,否则下不了。
相信我,根本下不了!!!在这里贴出我的资源:godotandroid模板v4.2.1资源-CSDN文库
IDM下载到一半总是出问题,最后终于再这位大佬这里找到解决方案:
原文链接:https://blog.csdn.net/ffppsty/article/details/142601144
下载之前,记住一定要下载到你记得住的路径!
导出模板Export_Template下载链接:
跟我一样的4.2.2版本的,直接复制链接到浏览器里下载就好了:https://downloads.tuxfamily.org/godotengine/4.2.2/Godot_v4.2.2-stable_export_templates.tpz
如果你是4.2版本或4.3,把链接中的两个4.2.2都改成4.2或者4.3就行。rcedit下载链接:
https://github.com/electron/rcedit/releases/tag/v2.0.0
一般都是64位,选第一个rcedit-x64下载就行
三、配置
1.部署资源
下载我分享的资源后,解压,你将看到:
如图,在C:\Users\你的用户名\AppData\Roaming\Godot\export_templates下新建一个名为4.2.1.stable的文件夹,如果你的版本不同,请把4.2.1改成你的版本。
之后把我分享的资源中的andoid_debug.apk和android_release.apk复制到这个目录下面。
之后在你的工程目录下面新建一个android文件夹,新建一个.build_version文件,写入
4.2.1.stable
保存。同样的,如果版本不同,请换成你的版本。
之后新建build目录,在build目录下面新建一个.gdignore文件,保存。
之后在build目录下创建templates文件夹,把我的资源中的android_source.zip解压到这里面。如果你完成了上述步骤,你将得到如下文件结构:
─android
└─build
└─templates
├─assetPacks
│ └─installTime
├─assets
├─gradle
│ └─wrapper
├─libs
│ ├─debug
│ └─release
├─res
│ ├─drawable
│ ├─drawable-nodpi
│ ├─values
│ ├─values-ar
│ ├─values-bg
│ ├─values-ca
│ ├─values-cs
│ ├─values-da
│ ├─values-de
│ ├─values-el
│ ├─values-en
│ ├─values-es
│ ├─values-es-rES
│ ├─values-fa
│ ├─values-fi
│ ├─values-fr
│ ├─values-hi
│ ├─values-hr
│ ├─values-hu
│ ├─values-in
│ ├─values-it
│ ├─values-iw
│ ├─values-ja
│ ├─values-ko
│ ├─values-lt
│ ├─values-lv
│ ├─values-nb
│ ├─values-nl
│ ├─values-pl
│ ├─values-pt
│ ├─values-ro
│ ├─values-ru
│ ├─values-sk
│ ├─values-sl
│ ├─values-sr
│ ├─values-sv
│ ├─values-th
│ ├─values-tl
│ ├─values-tr
│ ├─values-uk
│ ├─values-vi
│ ├─values-zh
│ ├─values-zh-rHK
│ └─values-zh-rTW
└─src
└─com
└─godot
└─game
2.godot配置
这时回到godot,点击项目-》导出,选择Android,你将看到:
点击“修复导入”
点编辑器-》编辑器设置
sdk路径设置成你刚安装的SDK根目录。
然后点击项目-》导出,选择Android,你就可以导出到Android平台了
输入设置
在 Dodge the Creeps 中,我们使用键盘控制玩家角色移动。如果游戏是在 PC 平台上进行的就没问题,但在手机或平板电脑上,就需要支持触屏输入。其点击事件可以和触摸事件一样处理,所以会将游戏转换为点击移动的输入方式。
默认情况下,Godot 会从触摸输入中模拟鼠标输入。这意味着,如果已经针对鼠标事件编写了代码,触摸时也会触发它。Godot 还可以从鼠标点击中模拟触摸输入,为了需要在切换到触摸输入后,能够继续在电脑上玩我们的游戏。
在 项目>项目设置 的 Input Devices > Pointing(输入设备 > 触点)下,启用 Emulate Touch From Mouse(根据鼠标模拟触摸)。
我们还想确保游戏在不同尺寸的屏幕上有一致的比例,所以在项目设置中进入 Display,然后点击 Window。在 Stretch 选项中,将 Mode 设置为 2d
,Aspect 设置为 keep
。
由于我们已经在 Window 设置中,还应该在 Handheld(手持设备)下将 Orientation(方向)设置为 portrait
(竖屏)。
接下来,我们需要修改 Player.gd
脚本来改变输入方式。我们将移除键盘输入并使玩家移动到触摸(或点击)事件设置的“目标”。
这是玩家的完整脚本,注释指出了我们做了哪些改变:
extends Area2D
signal hit
export var speed = 400
var screen_size
# Add this variable to hold the clicked position.
var target = Vector2()
func _ready():
hide()
screen_size = get_viewport_rect().size
func start(pos):
position = pos
# Initial target is the start position.
target = pos
show()
$CollisionShape2D.disabled = false
# Change the target whenever a touch event happens.
func _input(event):
if event is InputEventScreenTouch and event.pressed:
target = event.position
func _process(delta):
var velocity = Vector2()
# Move towards the target and stop when close.
if position.distance_to(target) > 10:
velocity = target - position
# Remove keyboard controls.
# if Input.is_action_pressed("ui_right"):
# velocity.x += 1
# if Input.is_action_pressed("ui_left"):
# velocity.x -= 1
# if Input.is_action_pressed("ui_down"):
# velocity.y += 1
# if Input.is_action_pressed("ui_up"):
# velocity.y -= 1
if velocity.length() > 0:
velocity = velocity.normalized() * speed
$AnimatedSprite.play()
else:
$AnimatedSprite.stop()
position += velocity * delta
# We still need to clamp the player's position here because on devices that don't
# match your game's aspect ratio, Godot will try to maintain it as much as possible
# by creating black borders, if necessary.
# Without clamp(), the player would be able to move under those borders.
position.x = clamp(position.x, 0, screen_size.x)
position.y = clamp(position.y, 0, screen_size.y)
if velocity.x != 0:
$AnimatedSprite.animation = "walk"
$AnimatedSprite.flip_v = false
$AnimatedSprite.flip_h = velocity.x < 0
elif velocity.y != 0:
$AnimatedSprite.animation = "up"
$AnimatedSprite.flip_v = velocity.y > 0
func _on_Player_body_entered( body ):
hide()
emit_signal("hit")
$CollisionShape2D.set_deferred("disabled", true)
签名调试
keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.jks -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999
在项目根目录下打开cmd,运行这行代码,你将得到调试密钥库
之后在导出这一栏这样设置,你就可以成功导出apk文件了!
参考:
导出 - 导出 - 《Godot 游戏引擎 v3.5 中文文档》 - 书栈网 · BookStack
https://blog.csdn.net/ffppsty/article/details/142601144