当前位置: 首页 > 工具软件 > Godot > 使用案例 >

godot引擎学习9

朱啸
2023-12-01

游戏进入参数
D:\godot2\bin\godot.windows.tools.64.exe --path E:\G3WorkCode\SimpleDebug --remote-debug  tcp://127.0.0.1:6007  --allow_focus_steal_pid 14416 --position 448,240  
要求工程设置主场景
rendering/environment

另外进入编辑器参数
D:\godot2\bin\godot.windows.tools.64.exe --path E:\G3WorkCode\SimpleDebug --editor

D:\godot2\bin\godot.windows.tools.32.exe --path E:\G3WorkCode\Simple --editor

解析.scen文件,生成节点数据
如以下文本文件
************************************************
[gd_scene load_steps=2 format=2]

[sub_resource type="SphereMesh" id=1]

[node name="MeshInstance" type="MeshInstance"]
mesh = SubResource( 1 )
material/0 = null
*************************************************

class ResourceInteractiveLoader : public Reference纯虚函数
三个派生类
class ResourceInteractiveLoaderBinary : public ResourceInteractiveLoader

class ResourceInteractiveLoaderText : public ResourceInteractiveLoader

class ResourceInteractiveLoaderDefault : public ResourceInteractiveLoader 

主要解析函数:

ResourceFormatLoader::load(const String &p_path, const String &p_original_path, Error *r_error)

Ref<ResourceInteractiveLoader> ril = load_interactive(p_path, p_original_path, r_error);

Error ResourceInteractiveLoaderText::poll()

解析node对象
Ref<PackedScene> ResourceInteractiveLoaderText::_parse_node_tag(VariantParser::ResourceParser &parser)

对于游戏工程创建场景:
Node *scene = NULL;
Ref<PackedScene> scenedata = ResourceLoader::load(local_game_path);
if (scenedata.is_valid())
   scene = scenedata->instance();
sml->add_current_scene(scene);

游戏绘制流程:
bool Main::iteration()
VisualServer::get_singleton()->draw(true, scaled_step);
VisualServerWrapMT::draw(bool p_swap_buffers, double frame_step)
VisualServerRaster::draw(bool p_swap_buffers, double frame_step)
具体:
VSG::rasterizer->begin_frame(frame_step);
VSG::scene->update_dirty_instances(); //update scene stuff

VSG::viewport->draw_viewports();
VSG::scene->render_probes();
_draw_margins();
VSG::rasterizer->end_frame(p_swap_buffers);

二编辑节点的小点
1,Spatial节点
设置位置调用
void Spatial::set_translation(const Vector3 &p_translation)
设置旋转角度调用
void Spatial::set_rotation_degrees(const Vector3 &p_euler_deg)

 类似资料: