Skip to content

gdscript
    # notify.gd
    class_name Notify
    extends BaseObject

    var info:String
    var info_color:Color
    var sub_info:String
    var sub_info_color:Color
    var duration:int

    func _init(info_p:String,info_color_p:= Color.WHITE,sub_info_p:="",sub_info_color_p:=Color.ORANGE,duration_p:=3):
        info = info_p
        info_color = info_color_p
        sub_info = sub_info_p
        sub_info_color = sub_info_color_p
        duration = duration_p

继承的类

gdscript
class_name BaseObject
const uuid_util = preload('res://addons/uuid/uuid.gd')

var id
var create_dt

func _init():
	self.id = uuid_util.v4()
	self.create_dt = Tools.get_now()

func get_proprerty_dic():
	var d = inst_to_dict(self)
	for key:String in d.keys():
		if key.begins_with("@"):
			d.erase(key)
	return d

func to_json(ignore_system_p:=false ):
	var dic = get_proprerty_dic()
	if ignore_system_p:
		dic.erase("id")
		dic.erase("create_dt")
	return JSON.stringify(dic)

func instance_from_json(json_string:String):
	var json = JSON.new()
	var error = json.parse(json_string)
	if error == OK:
		var d = inst_to_dict(self)
		d.merge(json.data,true)
		return dict_to_inst(d)
	else:
		print("JSON Parse Error: ", json.get_error_message(), " in ", json_string, " at line ", json.get_error_line())
		return null

func get_class_name() -> String:
	return "unset"

构造并使用

gdcript
    var notidy = Notify.new("ce")
	print("notidy",notidy.to_json(true))