【Godot 笔记】既然用 C# 又何必囿于 gdscript? 今日快讯
时间:2023-04-16 16:57:04 来源:哔哩哔哩
之前从 gdscript 转到用 C#,还一直用 gdscript 的写法,自己写的类仍然是继承自 Godot.Object 和 Godot.Reference,数组也只用 Godot.Collections.Array。后来实验发现这不是很好的选择。
1 对比实验
实验的容器有2个,分别是 System.Collections.Generic.List 与 Godot.Collections.Array,容器内装的对象分别继承自 Godot.Object、Godot.Reference 和 System.Object,则排列组合共6种情况。比较的算法框架如下:
(相关资料图)
2 实验结果
2.1 容器为 Godot.Collections.Array
1、容器元素为 Godot.Object
2、容器元素为 Godot.Reference
3、容器元素为 System.Object
报错:
E 0:00:01.738 mono_object_to_variant_impl: Attempted to convert an unmarshallable managed type to Variant. Name: 'NumSysObj' Encoding: 18.
<C++ 错误> 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 )()
不使用内置类型.cs:43 @ void 不使用内置类型.TestGdArraySysObj()()
不使用内置类型.cs:33 @ void 不使用内置类型._Input(Godot.InputEvent )()
2.2 容器为 System.Collections.Generic.List
1、容器元素为 Godot.Object
2、容器元素为 Godot.Reference
3、容器元素为 System.Object
3 结论
System 的 List 与 Godot 的 Array 大体相同,除了 Godot 的 Array 的元素一定要是 Godot 内置的类型。
继承自 Godot.Object 的对象不会垃圾回收,符合预期。
继承自 Godot.Reference 的对象没有如同在 gdscript 里那样马上回收(在 gdscript 中,监视器的 Objects 曲线是水平直线),而且比继承自 System.Object 的对象的回收频率低。在本例中,Godot.Reference 是大概每十余万个对象回收一次,而 System.Object 是大概每4千个对象回收一次。不懂,既然 Godot 是 C++ 写的,那怎么 Reference 到了 C# 就不能马上回收呢?
所以用 C# 就不必用 Godot.Reference 和 Godot 的 Array 了。既然用了 C# 又何必囿于 gdscript?
标签:
最新文章推荐
- 【Godot 笔记】既然用 C# 又何必囿于 gdscript? 今日快讯
- 巫师2打不开怎么回事 巫师2打不开
- 如何用 PVC 制作美洲原住民长笛_送各种礼物分别代表什么含义
- 中秋的由来简短
- 环球微资讯!朱逢博唱13首电影歌曲 朱逢博近况
- 三奶奶送的孩子胎记
- 她是央视主播,退休5个月后客死他乡,临终留26字遗言让人警醒
- 止回阀有几种类型的_止回阀有几种类型
- 咸阳市秦都区天王学校召开名师培养工作推进会 全球视讯
- 中超归来!新赛季首球诞生:大连人36岁老将7分钟双响包办前2球|每日观点
- 每日头条!柯南和怪盗基德的结局_柯南和怪盗基德的结局是什么
- 成都炭材2022年度净利3.42亿同比增长37.22% 公司产品销量及平均售价均显著增长-全球视点
- 国网长春供电公司深入开展全民国家安全教育日普法宣传活动_世界焦点
- 热头条丨怎么快速吃石榴_快速吃石榴的方法
- 要闻速递:助力提高防非意识 湖南证券业把金融安全知识送进社区
- 9省市将组团参展第七届世界智能大会 大会期间将力争签约项目再上新台阶|环球新资讯
- “五一”假期火车票今起开售 要注意这些变化-新资讯
- 【环球报资讯】哈尔滨银行2022年净利仅为四年前10%,不良率2.89%远超行业平均水平
- 4月14日基金净值:国投瑞银进宝灵活配置混合最新净值3.3767,涨3.66%-热点聚焦
- 南华仪器:拟向实控人之一收购嘉得力30%-45%股份并获其控制权
X 关闭
资讯中心
2022-08-06
2022-07-08
2022-05-20
2021-10-18
X 关闭