Godot GDScript初学者遇到的问题记录

  1. 添加全局单例设置时,不要在脚本中设置类名

    如果在脚本中定义了类名,类本身就是一个全局的类

  2. Godot中class_name与class 定义类的区别

    两个都是定义类,但**注册范围、访问方式完全不一样:

    class_name是全局注册指令,把这个类注册进项目全局命令空间,整个项目任意脚本,不需要preload,直接可以创建对象,使用Player:new()

    class 只是定义一个文件内部定义类,不会注册全局,外部脚本不能直接创建对象,必须先preload脚本资源:

csharp 复制代码
var scr = preload("res://models/player_data.gd")
var item = scr.ItemData.new()
  1. 类的一些特性
    • class_name定义的类是全局类,不需要prelaod,即可以直接使用,但是不能加入项目设置的全局单例中,但是要以定义静态方式直接引用,不过不能定义信号
    • 定义的类如果没有显式继承任何的其它的类,默认是隐继承RefCounted,即类默认是使用计数器方式进行垃圾回收的。
    • 如果显式继承Object类,那么这个类不会继承RefCounted,即不会被自动回收,需要手动调用.free(),否则会内存泄漏。
    • 类的构造方法是_init()
相关推荐
淡海水1 天前
09-04-内存-Unity原生对象生命周期
unity·c#·游戏引擎·gc
寂寞的船1 天前
【Unity Bug挑战】第10期 SerializeReference 内存泄漏之谜
unity·c#·游戏引擎·bug
tealcwu4 天前
【Unity高级】Unity URP:构建同时支持 2D 与 3D 场景的项目完全指南
3d·unity·游戏引擎
淡海水4 天前
10-01-互操作-C#与C++边界的内存管理
unity·c#·游戏引擎·.netcore·gc
小小数媒成员4 天前
UGUI原理(一)
开发语言·游戏·unity·游戏引擎
暴走约伯4 天前
【VFX工具链源码拆解 04】拯救丢失的绑定:Timeline 一键克隆与层级相对路径重映射算法
unity·c#·游戏引擎·硬件工程
小小数媒成员4 天前
Unity UGUI布局组件(LayoutGroup、ContentSizeFitter、LayoutElement)详解
unity·游戏引擎
tealcwu4 天前
【Unity基础】Unity输入与Time.deltaTime的使用原则
unity·游戏引擎
chen_2275 天前
godot做仪表hmi
游戏引擎·godot
郝学胜-神的一滴5 天前
AI 编程智能体 22:解析器赋能与实战落地全指南
人工智能·程序人生·游戏·unity·游戏引擎