【Godot】在 Godot 中模拟制作一个完全面向对象的类

Godot Version: 3.2.3

在 Godot 模拟制作一个完全面向对象的类

创建一个脚本
在这里插入图片描述
脚本中输入以下代码

"""=====================================================================
				Godot 制作完全面向对象的类
========================================================================
@datetime: 2020-8-27 18:41
@Godot version: 3.2.3
@author: [email protected]
@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,运行代码,或者在菜单中选择 运行 执行代码

在这里插入图片描述
查看代码的输出结果

猜你喜欢

转载自blog.csdn.net/qq_37280924/article/details/108266658