ソースを参照

Instantiate global classes properly, fixes #20857

Juan Linietsky 6 年 前
コミット
98ffb6b37e
1 ファイル変更13 行追加1 行削除
  1. 13 1
      editor/editor_properties.cpp

+ 13 - 1
editor/editor_properties.cpp

@@ -2187,7 +2187,19 @@ void EditorPropertyResource::_menu_option(int p_which) {
 				return;
 			}
 
-			Object *obj = ClassDB::instance(intype);
+			Object *obj = NULL;
+
+			if (ScriptServer::is_global_class(intype)) {
+				obj = ClassDB::instance(ScriptServer::get_global_class_base(intype));
+				if (obj) {
+					Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(intype));
+					if (script.is_valid()) {
+						obj->set_script(Variant(script));
+					}
+				}
+			} else {
+				obj = ClassDB::instance(intype);
+			}
 
 			if (!obj) {
 				obj = EditorNode::get_editor_data().instance_custom_type(intype, "Resource");