perf[gdscript]: 增加新的测试用例
parent
4b7cc81892
commit
d2e82658fe
|
@ -32,3 +32,13 @@ ue虽然开源源代码,但是代码量太大,历史包袱太重,不适合
|
||||||
```
|
```
|
||||||
|
|
||||||
- 用godot你能感觉我能把控底层,我能把控每一行代码的底层细节,这个是程序员的浪漫,godot在国外比较火是有原因的
|
- 用godot你能感觉我能把控底层,我能把控每一行代码的底层细节,这个是程序员的浪漫,godot在国外比较火是有原因的
|
||||||
|
|
||||||
|
# 为使用godot我应该选择什么语言,C# or GDScript
|
||||||
|
|
||||||
|
- gds更加简单,支持的更加完整,而且是脚本可以热更新
|
||||||
|
- C#很多库用不了,有限制,如果是为了性能可以在godot中使用C++
|
||||||
|
- C#对于godot来说比较重,推荐gds
|
||||||
|
- unity在很久之前也同时支持过js和C#,最后放弃了js,主要是因为unity是mono和C#非常友好
|
||||||
|
- godot使用C++去解释执行gds,这个时候对于godot来说比较重,推荐gds
|
||||||
|
- 通过学习gds也可以学到一些编译原理的知识
|
||||||
|
- godot不仅仅是一个游戏引擎,而且还是一个优质的学习资源
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://script/demo_test/demoTest.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[node name="Node2D" type="Node2D"]
|
||||||
|
script = ExtResource( 1 )
|
|
@ -0,0 +1,23 @@
|
||||||
|
extends Node2D
|
||||||
|
|
||||||
|
const RandomUtils = preload("res://util/RandomUtils.gd")
|
||||||
|
|
||||||
|
var count = 0
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
print(RandomUtils.randomBoolean())
|
||||||
|
randomize()
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
count = count + 1
|
||||||
|
if count % 100 == 0:
|
||||||
|
randomTest()
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
func randomTest():
|
||||||
|
print(RandomUtils.randomBoolean())
|
||||||
|
print(RandomUtils.randomInt())
|
||||||
|
print(RandomUtils.randomIntLimit(2))
|
||||||
|
print(RandomUtils.randomIntRange(-2147483648, -2147483646))
|
|
@ -0,0 +1,6 @@
|
||||||
|
extends Object
|
||||||
|
|
||||||
|
const MIN_INT: int = -2147483648
|
||||||
|
|
||||||
|
const MAX_INT: int = 2147483647
|
||||||
|
|
|
@ -1,8 +1,40 @@
|
||||||
extends Object
|
extends Object
|
||||||
|
|
||||||
|
const NumberUtils = preload("res://util/NumberUtils.gd")
|
||||||
|
const StringUtils = preload("res://util/StringUtils.gd")
|
||||||
|
|
||||||
const random = [null, false]
|
const random = [false, null]
|
||||||
|
|
||||||
static func init():
|
# 单例模式
|
||||||
random[0] = RandomNumberGenerator.new()
|
static func getRandom() -> RandomNumberGenerator:
|
||||||
|
if random[0]:
|
||||||
|
return random[1]
|
||||||
|
var randomGenerator = RandomNumberGenerator.new()
|
||||||
|
randomGenerator.randomize()
|
||||||
|
random[1] = randomGenerator
|
||||||
|
return randomGenerator
|
||||||
|
|
||||||
|
|
||||||
|
static func randomBoolean() -> bool:
|
||||||
|
return 1 == getRandom().randi_range(0, 2)
|
||||||
|
|
||||||
|
|
||||||
|
# 获得随机数[-2^32, 2^32)
|
||||||
|
static func randomInt() -> int:
|
||||||
|
return randomIntRange(NumberUtils.MIN_INT, NumberUtils.MAX_INT)
|
||||||
|
|
||||||
|
# 获得指定范围内的随机数 [0,limit)
|
||||||
|
static func randomIntLimit(limit: int) -> int:
|
||||||
|
return randomIntRange(0, limit)
|
||||||
|
|
||||||
|
# 获得随机数[-2^32, 2^32)
|
||||||
|
static func randomIntRange(from: int, to: int) -> int:
|
||||||
|
if from < NumberUtils.MIN_INT:
|
||||||
|
push_error(StringUtils.format("from [{}] shoud be >= [{}]", [from, NumberUtils.MIN_INT]))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if to > NumberUtils.MAX_INT:
|
||||||
|
push_error(StringUtils.format("to [{}] should be <= [{}]", [from, NumberUtils.MAX_INT]))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
return getRandom().randi_range(from, to - 1)
|
||||||
|
|
Loading…
Reference in New Issue