3.GDScript(1)概览
GDScript 是上面提到的用于Godot的主要语言。和其他语言相比,它与Godot高度整合,有许多优点:
- 简单,优雅,设计上为Lua、Python、Squirrel等语言用户所熟悉。
- 加载和编译速度飞快。
- 编辑器集成非常令人愉快,有节点、信号、其它场景相关项目的代码完成。
- 有内建矢量类型(比如Vector、Transform等),大量使用线性代数时非常有效。
- 支持多线程,像静态类型语言一样有效 - 这是我们避免使用诸如Lua、Squirrel等虚拟机的原因之一。
- 不使用垃圾回收器,所以它确定性地自动处理之这部分(大多数对象都是引用计数)。
- 它的动态特性使其需要提高性能时,可以很容易地优化C++代码段(通过GDNative),而这些不需要重新编译引擎。
GDScript的例子
有些人可以通过查看语法来更好地学习,下面是GDScript的一个简单示例。
# A file is a class! # Inheritance extends BaseClass # (optional) class definition with a custom icon class_name MyClass, "res://path/to/optional/icon.svg" # Member Variables var a = 5
var s = "Hello"
var arr = [1, 2, 3]
var dict = {"key": "value", :}
var typed_var: int
var inferred_type := "String" # Constants常类型 const ANSWER = 42
const THE_NAME = "Charly" # Enum枚举 enum {UNIT_NEUTRAL, UNIT_ENEMY, UNIT_ALLY}
enum Named {THING_1, THING_2, ANOTHER_THING = -1} # Built-in Vector Types容器类型 var v2 = Vector2(1, 2)
var v3 = Vector3(1, 2, 3) # Function func some_function(param1, param2):
var local_var = 5 if param1 < local_var:
print(param1)
elif param2 > 5:
print(param2)
else:
print("Fail!") for i in range():
print(i) while param2 != 0:
param2 -= 1 var local_var2 = param1 + 3
return local_var2 # Functions override functions with the same name on the base/parent class.
# If you still want to call them, use '.' (like 'super' in other languages).覆盖方法变动 func something(p1, p2):
.something(p1, p2) # Inner Class class Something:
var a = 10 # Constructor构造函数 func _init():
print("Constructed!")
var lv = Something.new()
print(lv.a)
3.GDScript(1)概览的更多相关文章
- Activity之概览屏幕(Overview Screen)
概览屏幕 概览屏幕(也称为最新动态屏幕.最近任务列表或最近使用的应用)是一个系统级别 UI,其中列出了最近访问过的 Activity 和任务. 用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除 ...
- Atitit 软件工程概览attilax总结
Atitit 软件工程概览attilax总结 1.1. .2 软件工程的发展 进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史. 表2 软件工程过程模型 表2将软件工程的主要过程模型做 ...
- iOS开发系列—Objective-C之基础概览
概览 前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知识是不太现实的,例如C语言的文件操作.内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会 ...
- iOS开发系列--IOS程序开发概览
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- Azure SQL Database (19) Stretch Database 概览
<Windows Azure Platform 系列文章目录> Azure SQL Database (19) Stretch Database 概览 Azure SQL Da ...
- Web前端开发大系概览 (前端开发技术栈)
前言 互联网建立50多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000 ...
- Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx
Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...
- 【WPF系列】基础学习-WPF架构概览
引言 WPF从.net framewok3.0加入以来,经历了很多跟新.每次更新都给用户带来了新的功能或者优化性能.下面我们首先看下WPF再.netFramework中的位置,接着介绍下WPF的架构框 ...
- jQuery1.11源码分析(1)-----Sizzle源码概览[原创]
最近在啃jQuery1.11源码,上来就遇到Sizzle这个jQuery的大核心,虽然已经清楚了Sizzle的用途,先绕过去也没事,但明知山有虎偏向虎山行才是我们要做的. 本文面向的阅读对象:正在学习 ...
随机推荐
- linux screen工具
https://www.cnblogs.com/lpfuture/p/5786843.html 一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长 ...
- python摸爬滚打之day03----基本数据类型(int,str,bool)
1.数据类型转换 字符串 ----> bool print( bool("hello") ) -----> True 数字----> bool print( b ...
- Python+Flash+NodeJS 接口自动化平台
一.前端安装步骤# manager-web(1)下载项目 git clone https://github.com/t880216t/manager-web.git (2) 安装依赖 cnpm ins ...
- 重读《深入理解Java虚拟机》一、Java虚拟机内存区域的划分
一.Java虚拟机内存区域如何划分 1.Java虚拟机内存区域的划分 区域名称 作用(用途) 类型 特点 虚拟机规定异常情况 内存分配与回收 其他说明 1 程序计数器 指示当前正在执行的字节码指令地址 ...
- IIS添加Expires头
今天的Web页面包含大量组件,并且数量不断增长:页面的初访问者会进行很多HTTP请求,但通过使用一个长久的Expires头,使这些组件可以被缓存.这会在后续的页面浏览中避免不必要的HTTP请求.长久的 ...
- winform版的dota改键器
从网上找的源码很不齐全,自己补充了一下,有兴趣的可以看看. 首先是建立一个hook类WFChangeKey using System; using System.Reflection; using S ...
- fatal error: vector: No such file or directory
jni/mac.cpp:28:18: fatal error: vector: No such file or directory jni/mac.cpp:29:18: fatal error: me ...
- NYOJ 61 传纸条(一)
双线DP #include<iostream> #include<algorithm> #include<ctype.h> #include<string&g ...
- POJ1611:The Suspects(模板题)
http://poj.org/problem?id=1611 Description Severe acute respiratory syndrome (SARS), an atypical pne ...
- python的py文件命名注意事项
最近,在学习python爬虫时,用到各种库特性时,写小段代码,命名demo的py文件诸如:requests.py,json.py,csv.py.都会提示类似“module 'csv' has no a ...