几乎相同的代码会导致错误?

时间:2014-06-22 18:40:32

标签: c# xna xna-4.0

所以我有两行非常相似的代码。这是第一行(没有问题):

Player.Tex = Content.Load<Texture2D>(@"Textures\d");

这是第二行(具有TypeInitializationException)

HealthPickup.Tex = Content.Load<Texture2D>(@"Textures\healthPickup");

在Player类和HealthPickup类中,公共类之后有一行代码:

public static Texture2D Tex;

那么为什么我的HealthPickup类会导致此错误?我错过了一些明显的事吗?我试过寻找异常,但没有任何帮助。

编辑:根据要求,我的HealthPickup课程如下:

http://pastebin.com/RXZ2xh1e

另外,我的Player类:

http://pastebin.com/XKuVXPk3

请注意,除了4个变量之外,我的HealthPickup类与我的Player类相同,(Tex,Dir,Pos和Player和Tex中的速度,randX,randY,HealthPickup中的Pos)

2 个答案:

答案 0 :(得分:1)

您正在尝试将Random类型的对象转换为整数。这是不允许的。您可以使用Random方法重载之一从Next对象获取随机数。像这样:

(new Random (Guid.NewGuid().GetHashCode())).Next()

使用Guid.NewGuid()...不是强制性的,但会确保您获得具有不同种子的2个Random个对象

答案 1 :(得分:0)

原来我的HealthPickup类中有这些行:

public static int randX = Convert.ToInt32(new Random(1));
public static int randY = Convert.ToInt32(new Random(1));
public static Point Pos = new Point(randX, randY);

显然Point()不喜欢随机数,所以我改为:

public static Point Pos = new Point(50, 50);

解决问题