在Godot中,一个游戏的启动大致流程如下:

  简而言之,Godot的main启动一个进程,加载所需的驱动设备(如渲染设备:GL/GLES/Vulkan等)、音频设备,输入控制器设备等等;然后进入主循环,加载一个自动创建的对象——SceneTree(场景管理系统对象,它用户管理场景图),这个对象包含一个RootViewPort节点(它是一个Node),该节点包含一个默认的ViewPort(以便提供默认渲染的输出视口)。

  然后,每当用户用Godot编辑器创建一个关卡(或场景文件),并设置默认的启动的场景文件,Godot将该场景文件的根节点附加到RootViewPort节点上,当节点进入场景树(SceneTree),变为活动状态。按场景树顺序依次回调各个子节点的_init(),_ready()等声明函数。

  从一个场景切换为另一个场景,根unity3D差不多,提供了两个方式:

1 get_tree().change_scene("res://levels/level2.tscn")

  或

var next_scene = preload("res://levels/level2.tscn")
get_tree().change_scene_to(next_scene)

  其中,第二种方式比较适合预先加载资源缓存到内存或gpu缓存中,然后在不同关卡之间来回切换;而第一种比较适合只需要一次场景切换而不需要来回切换的情况。

Godot的场景树的更多相关文章

  1. Cocos2d-JS场景树

    场景树概念(Scene Graph) 场景树是Cocos2d-JS中用来管理场景中所有元素的一个数据结构,场景树之所以被称为一棵树是因为它将一个场景的所有子结点以树状图的形式组织在一起. Cocos2 ...

  2. <4>Cocos Creator基本概念(场景树 节点 坐标 组件 )

    1.场景树 Cocos Creator是由一个一个的游戏场景组成,场景是一个树形结构,场景由 有各种层级关系的节点(下一节有具有介绍)组成: 如创建一个HelloWorld的默认项目NewProjec ...

  3. cc.Node—场景树

    对于cc.Node我分了四个模块学习: 1.场景树,2.事件响应,3.坐标系统,4.Action的使用:在此记录经验分享给大家. 场景树 1: creator是由一个一个的游戏场景组成,通过代码逻辑来 ...

  4. [译]Godot系列教程四 - 编写脚本

    编写脚本(Scripting) 简介 关于无需编程即可创建视频游戏的那些工具的谈论有很多.不用学习编程知识对很多独立开发者来说就是一个梦想.这种需求 - 游戏开发者.甚至在很多公司内部,希望对游戏流程 ...

  5. [译]Godot系列教程六 - 简单的二维游戏

    Pong Godot自带的Demo中有大量更复杂的示例,但这款叫"Pong"的游戏可以对2D游戏的基本特性做一个介绍. 静态资源 本文所用到的一些资源文件:http://files ...

  6. 探索未知种族之osg类生物---状态树与渲染树以及节点树之间的关系

    节点树 首先我们来看一个场景构建的实例,并通过它来了解一下“状态节点”StateGraph 和“渲染叶”RenderLeaf 所构成的状态树,“渲染台”RenderStage 和“渲染元”Render ...

  7. 重温数据结构:树 及 Java 实现(转)

    转自:http://blog.csdn.net/u011240877/article/details/53193877 读完本文你将了解到: 什么是树 树的相关术语 根节点父亲节点孩子节点叶子节点如上 ...

  8. 4.GDscript(2)关键字,运算符,字面量

    (来源godot官方文档) 关键词 下面是该语言支持的关键字列表.由于关键字是保留字(令牌),它们不能用作标识符.操作符(如 in , not , and 或 or )以及下面列出的内置类型的名称也是 ...

  9. Egret3D 研究报告(一)初试

    了解的朋友应该知道我最近一直都在鼓吹webgl. 今天有一点时间,加了一个Egret3D的群,就开始了这个坑. 耳听为虚,眼见为实.让我们荡起双桨,一起去刷一下egret 打开姿势 至于以什么姿势打开 ...

  10. OpenGL学习资料汇总

    我学OpenGL的3D编程也有1.2个年头了,走了很多弯路,也算有点收获.现在整理出一些好用的资料如下. NeHe OpenGL教程中文版 地址(http://www.yakergong.net/ne ...

随机推荐

  1. 记一次redis集群搭建过程

    在搭建前,我们先用vmware创建3台虚拟机,并确保它们相互之间能够ping通. 1. redis源码安装 1.1 编译安装 apt install gcc make wget http://down ...

  2. Windows 分辨率改变引起WPF的适应问题

    系统分辨率变化,全屏WPF的UI出现没更新和白底之类的现象记录. 您可以使用SystemParameters.WorkArea.最初设置MainWindow的MaxHeight. 在MainWindo ...

  3. 求助:我需要用Python中parsel模块提取文章的文本内容,有什么办法

    求助: 像这样 我想提取小说文章内容 怎么提取 我要用的模块有parsel <!DOCTYPE html> <html lang="en"> <hea ...

  4. vxlan结合iptables-snat实现内网服务器公网访问

    如上图,有这样一种场景,我们经常遇到,局域网内有两台服务器,Server 1和Server 2,Server 1可以通通网,Server 2只能通内网,无法直接访问公网 现在想Server 2能访问到 ...

  5. FileZilla链接centos虚拟机不显示问题

    这段时间因为不是很忙,一直想学习一下网络安全方面的技术,准备考个信安中级,网络安全方面经常用到虚拟机,所以及用vm新建虚拟机后,一直发现连不上FileZilla,于是就在网上搜了一下,有一些参考问题, ...

  6. Python后端基础知识总结

    1.所谓可变类型与不可变类型是指:是否可以在不改变原来数据的引用地址基础上,去修改数据.如果能直接修改那么就是可变,否则是不可变 不可变对象:该对象所指向的内存中的值不能被改变.当改变某个变量时候,由 ...

  7. ES6-Class类下

    前面super的源码: 查看代码 <script> // 1.作为函数调用 // 代表父类的构造方法,只能用在子类的构造方法中,用在其他地方就会报错 // super 虽然代表了父类的构造 ...

  8. 虚拟内存跟物理内存之间的映射mmap\munmap

    #include <stdio.h> #include <sys/mman.h> int main(void) { /* * 创建虚拟内存的映射 * void *mmap (v ...

  9. 读后笔记 -- Java核心技术(第11版 卷 II) Chapter5 数据库编程

    5.1 JDBC API 1. JDBC (Java Database Connectivity) is an API for interacting with a database in Java. ...

  10. Java中如何判断两个对象是否相等

    参考:https://blog.csdn.net/u013063153/article/details/78808923 下面是自己开发过程中的实现 package com.***.***.entit ...