最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【Godot 筆記】既然用 C# 又何必囿于 gdscript?

2023-04-16 17:04 作者:SpriteSword  | 我要投稿

????????之前從 gdscript 轉(zhuǎn)到用 C#,還一直用 gdscript 的寫法,自己寫的類仍然是繼承自 Godot.Object 和 Godot.Reference,數(shù)組也只用 Godot.Collections.Array。后來(lái)實(shí)驗(yàn)發(fā)現(xiàn)這不是很好的選擇。

1 對(duì)比實(shí)驗(yàn)

????????實(shí)驗(yàn)的容器有2個(gè),分別是 System.Collections.Generic.List 與 Godot.Collections.Array,容器內(nèi)裝的對(duì)象分別繼承自 Godot.Object、Godot.Reference 和 System.Object,則排列組合共6種情況。比較的算法框架如下:

2 實(shí)驗(yàn)結(jié)果

2.1 容器為 Godot.Collections.Array

1、容器元素為 Godot.Object

2、容器元素為 Godot.Reference

3、容器元素為 System.Object

報(bào)錯(cuò):

E 0:00:01.738 ? mono_object_to_variant_impl: Attempted to convert an unmarshallable managed type to Variant. Name: 'NumSysObj' Encoding: 18.

? <C++ 錯(cuò)誤> ? ? ?Method failed. Returning: Variant()

? <C++ 源文件> ? ? modules/mono/mono_gd/gd_mono_marshal.cpp:1124 @ mono_object_to_variant_impl()

? <棧追蹤> ? ? ? ? :0 @ Int32 Godot.Collections.Array.godot_icall_Array_Add(IntPtr , System.Object )()

? ? ? ? ? ? ? ? Array.cs:173 @ Int32 Godot.Collections.Array.Add(System.Object )()

? ? ? ? ? ? ? ? Array.cs:531 @ void Godot.Collections.Array`1[[NumSysObj, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].Add(NumSysObj )()

? ? ? ? ? ? ? ? 不使用內(nèi)置類型.cs:43 @ void 不使用內(nèi)置類型.TestGdArraySysObj()()

? ? ? ? ? ? ? ? 不使用內(nèi)置類型.cs:33 @ void 不使用內(nèi)置類型._Input(Godot.InputEvent )()


2.2 容器為 System.Collections.Generic.List

1、容器元素為 Godot.Object

2、容器元素為 Godot.Reference

3、容器元素為 System.Object

3 結(jié)論

? ? ? ? System 的 List 與 Godot 的 Array 大體相同,除了 Godot 的 Array 的元素一定要是 Godot 內(nèi)置的類型。

????????繼承自 Godot.Object 的對(duì)象不會(huì)垃圾回收,符合預(yù)期。

????????繼承自 Godot.Reference 的對(duì)象沒(méi)有如同在 gdscript 里那樣馬上回收(在 gdscript 中,監(jiān)視器的 Objects 曲線是水平直線),而且比繼承自 System.Object 的對(duì)象的回收頻率低。在本例中,Godot.Reference 是大概每十余萬(wàn)個(gè)對(duì)象回收一次,而 System.Object 是大概每4千個(gè)對(duì)象回收一次。不懂,既然 Godot 是 C++ 寫的,那怎么 Reference 到了 C# 就不能馬上回收呢?

????????所以用 C# 就不必用 Godot.Reference 和 Godot 的 Array 了。既然用了 C# 又何必囿于 gdscript?


【Godot 筆記】既然用 C# 又何必囿于 gdscript?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
大庆市| 尚志市| 诸城市| 米泉市| 天津市| 赤壁市| 兴海县| 盐边县| 浦江县| 大英县| 从江县| 汽车| 聂荣县| 崇文区| 灵璧县| 苏州市| 葫芦岛市| 富裕县| 芦山县| 宣恩县| 永定县| 普洱| 玉门市| 孟津县| 彭阳县| 镇赉县| 孟连| 长宁县| 万源市| 泸溪县| 浑源县| 铜陵市| 贵溪市| 方城县| 德惠市| 梨树县| 社旗县| 内乡县| 沙湾县| 麻城市| 水富县|