我一直在努力将BigInteger
添加到MonoDevelop中的代码中以允许非常大的数字,但是System.Numerics
给了我很多麻烦。我添加了.dll参考,iv确保其他所有内容都被正确引用,但我仍然收到此错误:
Assets/Scripts/Click.cs(4,14): error CS0234: The type or namespace name `Numerics' does not exist in the namespace `System'. Are you missing an assembly reference?
以下是我尝试使用Numerics的课程:
using UnityEngine;
using System.Collections;
using System;
using System.Numerics;
public class Click : MonoBehaviour {
public UnityEngine.UI.Text PixelsDisplay;
public UnityEngine.UI.Text PPC;
public double pixels = 0.0;
public double ppc = 1.0;
void Update(){
PixelsDisplay.text = "Pixels: " + pixels.ToString ("#,#");
if (pixels >= 10000000) {
PixelsDisplay.text = "Pixels: " + Math.Round(pixels / 1000000, 2) + "M";
}
if (pixels >= 1000000000) {
PixelsDisplay.text = "Pixels: " + Math.Round(pixels / 1000000000, 2) + "B";
}
if (pixels >= 1000000000000) {
PixelsDisplay.text = "Pixels: " + Math.Round(pixels / 1000000000000, 2) + "T";
}
if (pixels >= 1000000000000000) {
PixelsDisplay.text = "Pixels: " + Math.Round(pixels / 1000000000000000, 2) + "Qd";
}
if (pixels >= 1000000000000000000) {
PixelsDisplay.text = "Pixels: " + Math.Round(pixels / 1000000000000000000, 2) + "Qt";
}
if (pixels >= BigInteger.Parse("1000000000000000000000")) {
PixelsDisplay.text = "Pixels: " + Math.Round(pixels / BigInteger.Parse("1000000000000000000000"), 2) + "Sx";
}
PPC.text = "PPC: " + ppc.ToString ("#,#");
//TODO
}
public void Clicked(){
pixels += ppc;
}
}
现在这是一张显示我所有参考文献的图片:
我搜索过类似的问题,但是给出的答案并不直接与System.Numerics打交道,而且通常都没有使用MonoDevelop。谢谢你的帮助!
答案 0 :(得分:1)
System.Numerics
未在Unity使用的Mono风格中实现。
因此您无法使用该命名空间。请记住,Unity使用的Mono是自定义的,并且与.NET 2.0部分兼容。
MonoDevelop或VisualStudio将允许您添加所需的DLL,不会抛出任何错误,但Unity会。
比较列表here。
答案 1 :(得分:0)
您可以尝试从https://github.com/Microsoft/referencesource复制所需的类 - 它可能会转移到复制/修补越来越多的文件,或者它可能相当简单。我让Complex.cs只能进行一两次更改。