这些是我的课:
namespace MyFirstGame
{
public static class OstacoliManager
{
#region Dichiarazioni
private static List<Ostacolo> ostacoli = new List<Ostacolo>();
private static List<Ostacolo> oggettiSulloSchermo = new List<Ostacolo>();
private static int objectCount = 20;
private static Random rand = new Random();
#endregion
#region Metodi ausiliari
public static void Inizializza()
{
oggettiSulloSchermo.Clear();
for (int i = 0; i < objectCount; i++)
{
//Dalla lista degli ostacoli ne creo tot a caso. Lo faccio da ostacoli e non da texture per l'eventualità in cui abbiano dimensioni diverse ecc
int randIndex = rand.Next(0, ostacoli.Count());
Ostacolo o = new Ostacolo(
ostacoli[randIndex].Texture,
ostacoli[randIndex].Strada,
ostacoli[randIndex].DrawDepth
);
o.resetPosition();
oggettiSulloSchermo.Add(o);
}
}
...
声明了“Ostacolo”类:
namespace MyFirstGame
{
public class Ostacolo : GameObject
{
#region Dichiarazioni
private Random rand = new Random();
private Texture2D texture;
#endregion
#region Costruttore
public Ostacolo(Texture2D texture, LayerDiSfondo strada, float profondita)
{
...
}
#endregion
当在第一个代码块中,我调用函数“Inizializza()”时,特别是在我这样做的地方:
Ostacolo o = new Ostacolo(...)
和
oggettiSulloSchermo.Add(o)
public void resetPosition()
{
WorldLocation = new Vector2(rand.Next(600, 3000), strada.doveCamminareY());
}
和
private Random rand = new Random();
我发现 o 每次都指向同一个对象!“New”关键字确实创建了一个新对象,不是吗?