如何在不分配任何垃圾的情况下以千分之一秒的读数作为计时器?
我知道,可以从thousandthsArray[nnn]
但是,如何在每个时间报告,每个帧中进行划分,而又不会在划分秒数的过程中产生垃圾。
例如当前时间是14.397
我需要在不造成任何垃圾的情况下从14秒中分离出397。
但是数学函数似乎在每一帧中都会产生一点垃圾。我能想到的没有什么是最佳选择。甚至工作。
答案 0 :(得分:3)
我认为,如果不创建任何垃圾,这是不可能的。您应该尽可能少地去参加。
您可以使用Mathf.Floor
将其四舍五入到最后的int
,使其“忘记”任何小数,然后从原始值中减去它,例如
float time = 14.6978f;
float fullSeconds = Mathf.Floor(time);
// = 14 (rounded down)
int thousandthOfSeconds = Mathf.RoundToInt((time - fullSeconds) * 1000);
// = 698 (rounded up)
至少比在此处理任何字符串便宜。
答案 1 :(得分:0)
有多种清除非托管资源的方法:
实现IDisposable接口和Dispose方法 “使用”块还用于清除非托管资源 有两种方法可以实现Dispose方法:
使用“ SafeHandle”类实现处置(它是内置的抽象类,具有“ CriticalFinalizerObject”和“ IDisposable”接口) 要重写的Object.Finalize方法(此方法是销毁特定对象之前使用的干净非托管资源) 让我们看下面的代码来处理非托管资源:
使用“ SafeHandle”类实施处置: