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()
相关推荐
点心的游戏开发世界3 小时前
GDScript 入门笔记(五):函数
笔记·游戏引擎·godot
谢斯6 小时前
[unity]如何在unity中添加newtonsoft-json
unity·json·游戏引擎
云雨巫山11 小时前
Unity 游戏开发性能优化全景手册
unity·智能手机·性能优化·游戏引擎
学习星球11 小时前
AI 原生游戏开发:Godot 4 + AI Agent 全栈指南(Ziva 3 / Godot MCP 深度实战)
人工智能·游戏引擎·godot
云雨巫山11 小时前
Unity 性能优化 · 图解全景手册
unity·性能优化·游戏引擎
点心的游戏开发世界1 天前
GDScript 入门笔记(二):变量与数据类型
笔记·游戏引擎·godot
郝学胜-神的一滴2 天前
CMake 047:解锁安装阶段自定义操作,告别配置阶段提前执行坑
运维·服务器·c++·游戏引擎·图形渲染·opengl
微三云生态系统架构师-彭丹3 天前
任务卷轴积分系统架构设计:从任务状态机到合规风控的完整实现
unity·系统架构·游戏引擎
XR技术研习社3 天前
从 PICO 文档看未来短期内的 Unity 版本选择
unity·游戏引擎·xr·vr