384人加入学习
(0人评价)
GDScript初学者入门教程-基于Godot和AI教学

使用Godot4.6.2 制作完成于2026.5.13

价格 免费

## 第 9 节:数组 Array
##
## 演示 Array 的创建、增删查改、遍历。

数组用方括号创建,存放任意类型的元素。
var enemies: Array = ["slime", "Goblin", "orc"]


#索引访问(支持负数索引)

enemies [o]      #"Slime" 这里的0表示数组数据中的第一个

enemies[-1]     #“orc"(最后一个) ,-1在这里表示数组中倒数第一个数据

#问题:如果查询超出索引数据,会出现什么情况?


#增删
enemies.append ("Dragon")    #末尾追加

enemies.insert(1,"wolf")    #在指定位置1插入

enemies.erase("Slime")    #按值删除

enemies.pop_back()   #弹出最后一个,弹出即删除的意思

#这里使用方法的是数组名+"."+方法(或者叫系统给出的函数)来调用,来实现某个功能


#查询
enemies.size   #数组长度,即多少个数据

Oenemies.has("Goblin")   # true / false

enemies.find("Goblin")  #索引,找不到返回-1
 

#has 和find都是查询,has只是简单判断有没有这个数据,find除了判断有没有,还要给出具体的索引位置


#遍历
for e in enemies:print(e)


重要坑:数组在GDScript中是按引用传递的。
func modify(arr):arr.append("x")
var a := [1,2, 3]modify(a)print(a)
#这会改到外面的原数组!
#[1,2,3,"x"]
要传副本得显式调用 .duplicate()。

extends Node

enum State{IDLE,RUN}
    

func _ready() -> void:
    var enemies: Array = ["Slime", "Goblin", "Orc"]
    var enemies2: Array = [1,2,3,4,5]
    var enemies4: Array = [1,2,3,4,5,"sdfer"]
    
    var enemies3: Array = [State.IDLE,2,3,4,5]
    

    # 索引访问
    print("第一个敌人:", enemies[0])
    print("最后一个敌人:", enemies[-1])    # 支持负索引

    # 长度
    print("一共有 ", enemies.size(), " 个敌人")

    # 增加
    enemies.append("Dragon")
    print("追加 Dragon 后:", enemies)

    enemies.insert(1, "Wolf")
    print("在位置 1 插入 Wolf:", enemies)

    # 删除
    enemies.erase("Slime")
    print("删除 Slime 后:", enemies)

    enemies.pop_back()
    print("弹出最后一个后:", enemies)

    # 查找
    print("有 Goblin 吗:", enemies.has("Goblin"))
    print("Goblin 的索引:", enemies.find("Goblin"))

    # 遍历
    print("--- 遍历 ---")
    for e in enemies:
        print("敌人:", e)

    # 带索引遍历
    print("--- 带索引遍历 ---")
    for i in range(enemies.size()):
        print(i, ":", enemies[i])

    # 注意:数组是按引用传递的
    demo_reference(enemies)
    print("函数处理后的原数组:", enemies)


func demo_reference(arr: Array) -> void:
    # 这里修改会影响外部的原数组!
    arr.append("被函数加进来的")
 

[展开全文]

授课教师

问问题加入A计划,有专门负责答疑的老师哦!!!

课程特色

下载资料(1)
视频(35)