Godot Version: 3.2.3
在 Godot 模拟制作一个完全面向对象的类
创建一个脚本
脚本中输入以下代码
"""=====================================================================
Godot 制作完全面向对象的类
========================================================================
@datetime: 2020-8-27 18:41
@Godot version: 3.2.3
@author: 1693619798@qq.com
@version: 1.0
====================================================================="""
tool
extends EditorScript
#################################################
## 内置方法
#################################################
func _run() -> void:
var vec = Math.Vec2(70, 30)
print(vec.add(Vector2(200, 500)).limit(200))
#################################################
## Math 类
##===============================================
##(这是一个内部类,如果想做一个全局的类,就重新做一个脚本
## 将下面内容剪切进去,再将 class Math改为 class_name Math
## 即可)
#################################################
class Math extends Reference:
"""
Vec2 类
"""
static func Vec2(x: float, y: float):
return Vec2.new(x, y)
class Vec2:
var __vel: Vector2 # 私有变量
# @Override
func _init(x: float, y: float) -> void:
__vel = Vector2(x, y)
# @Override
func _to_string() -> String:
""" Print 时输出这个变量的内容"""
return str(__vel)
func add(v: Vector2) -> Vec2:
"""增加"""
__vel += v
return self
func sub(v: Vector2) -> Vec2:
"""减去"""
__vel -= v
return self
func mult(n: float) -> Vec2:
"""相乘"""
__vel *= n
return self
func dev(n: float) -> Vec2:
"""相除"""
__vel /= n
return self
func limit(max_length: float) -> Vec2:
"""向量的长度控制在一个范围内"""
if __vel.length() > max_length:
__vel = __vel.normalized() * max_length
return self
在脚本代码界面中,按下 Ctrl + Shift + X
,运行代码,或者在菜单中选择 运行
执行代码
查看代码的输出结果