0%

Godot 4.3

GDScript
1
2
3
4
$Label["label_settings"]["font_color"] = 颜色:Color

# 示例
$Label["label_settings"]["font_color"] = Color('fecc00')

扩展

通过 节点[属性1][子属性][...] 来访问节点某个属性的子属性

参考

  • 没有

Godot 4.3

注意

不完全符合 JSON 规范:

  • 数组或对象中的尾随逗号将被忽略,而不是引起解析器错误。
  • 换行符和制表符在字符串文字中被接受,并被视为它们相应的转义序列 \n 和 \t。
  • 使用 String.to_float 解析数字,这通常比 JSON 规范更宽松。
  • 某些错误,例如无效的 Unicode 序列,不会导致解析器错误。相反,该字符串会被清理并将错误记录到控制台。

创建JSON实例

GDScript
1
var json = JSON.new()

从字符串解析

GDScript
1
2
3
4
json.parse(JSON字符串)

# 示例
json.parse('{"a":"hello hexo","b":"TheChuan1503"}')

读取JSON内容

GDScript
1
2
3
4
5
6
var dic = json.data
# 如果json是键值对则dic类型为Dictionary,数组则返回Array,其余同理

# 读取Dictionary示例
dic['a'] # 返回hello hexo
dic['b'] # 返回TheChuan1503

Dictionary判断是否存在某个键

GDScript
1
2
3
4
5
dic.has(键名)

# 示例
dic.has('a') # 返回true
dic.has('c') # 返回false

JSON序列化为字符串

GDScript
1
2
3
4
JSON.stringify(Variant)

# 示例
JSON.stringify(json.data) # 返回序列化后的字符串

注意:

JSON 规范没有定义整数和浮点数类型,只有一个数字类型。
因此,将 Variant 转换为 JSON 文本会将所有数字值转换为 float 类型。

参考

Godot 4.3

读取文件

GDScript
1
2
3
4
5
FileAccess.open(文件路径,FileAccess.READ).get_as_text()

# 示例
FileAccess.open('res://a.txt',FileAccess.READ).get_as_text()
FileAccess.open('/storage/emulated/0/a.txt',FileAccess.READ).get_as_text()

创建文件夹

GDScript
1
2
3
4
DirAccess.open(父文件夹路径).make_dir(子文件夹名)

# 示例
DirAccess.open("/storage/emulated/0/").make_dir("新建文件夹");

运行后会在 /storage/emulated/0/ 下创建一个名为 新建文件夹 的文件夹
得到 /storage/emulated/0/新建文件夹/

代码

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function getClientIp() {
if ($_SERVER['HTTP_CLIENT_IP']) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif ($_SERVER['HTTP_X_REAL_IP']) {
$ip = $_SERVER['HTTP_X_REAL_IP'];
} elseif ($_SERVER['HTTP_X_FORWARDED_FOR']) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ips = explode(',', $ip);
$ip = $ips[0];
} elseif ($_SERVER['REMOTE_ADDR']) {
$ip = $_SERVER['REMOTE_ADDR'];
} else {
$ip = '0.0.0.0';
}

return $ip;
}

注意: 这可能会获取到IPv6地址

设置图块

GDScript
1
2
3
4
5
var vector:Vector2 = Vector2(0,0) # 定义需要设置的坐标(x,y)
var sceneCollectionId = 0 # 定义场景合集id(可在TileSet->图块中查看)
var sceneId = 0 # 定义场景id(在TileSet->图块->你的场景图集,最右侧场景路径的末尾)

$TileMapLayer.set_cell(vector, sceneCollectionId, Vector2(0,0), sceneId)

移除图块

如果 source_id-1atlas_coordsVector2i(-1, -1)alternative_tile-1,则会擦除该单元格。擦除后的单元格中,所有标识符都会自动设为对应的无效值,即 -1Vector2i(-1, -1)-1

GDScript
1
2
3
var vector:Vector2 = Vector2(0,0) # 定义需要设置的坐标(x,y)

$TileMapLayer.set_cell(vector, -1)

  1. 在需要处理的节点下添加一个 TextureButton 子节点
  2. 使 TextureButton 充满整个节点
  3. TextureButton 添加点击事件即可
    GDScript
    1
    2
    3
    func onClick():
    print('clicked')
    $TextureButton.pressed.connect(onClick)

dp2px

Java
1
2
3
public static float dp2px(float dp) {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, Resources.getSystem().getDisplayMetrics());
}

px2dp

Java
1
2
3
4
5
6
public static float px2dp(Context context,float px) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
float pxValue = px;
float dpValue = pxValue / metrics.density;
return dpValue;
}