XNA中的C#对象和类

XNA中的C#对象和类,c#,class,object,xna,C#,Class,Object,Xna,我正在创建一个具有特定数量对象的类。当这些对象以该容量再次在屏幕上创建和绘制时,我将重新初始化该类。问题是,我希望以这样一种方式重新初始化,即如果创建了新对象,则必须在屏幕上保留/绘制上一个对象。我无法获取逻辑 crShade = new CreateShade[Obj_num]; for (int i = incr_Obj; i < crShade.Length; i++) { int r = rad.Next(0, 7); int x = 0; switch (r) {

我正在创建一个具有特定数量对象的类。当这些对象以该容量再次在屏幕上创建和绘制时,我将重新初始化该类。问题是,我希望以这样一种方式重新初始化,即如果创建了新对象,则必须在屏幕上保留/绘制上一个对象。我无法获取逻辑

crShade = new CreateShade[Obj_num]; for (int i = incr_Obj; i < crShade.Length; i++) {
    int r = rad.Next(0, 7); int x = 0; switch (r) {
        case 0: x = 0; break; case 1: x = 120; break; case 2: x = 240; break; case 3: x = 360; break;
    }
    X_pos.Add(x); crShade[i] = new CreateShade(x, -60, clr[3]); _Shade.Add(crShade[i]);
}
crShade=newcreateshade[Obj_num];对于(int i=incr_Obj;i
--

公共类CreateShade{
public int posX;public int posY;public Color;Random r=new Random();private int width=120;private int height=60;public static bool\u Fall;public static bool检查;public static List y\u pos=new List();int balance=0;public CreateShade(int x,int y,Color Color){
int random=r.Next(0,4);this.posY=y;this.posX=x;this.color=color;
}
公共作废取款(SpriteBatch批量){
batch.Draw(Vimap_ScreenManager.blank,新矩形(posX、posY、宽度、高度)、颜色);
}
公共无效更新(){
int计数器=0;如果(posY!=740余额){
位置+=10;如果(计数器!=y位置计数){
if(新矩形(posX,posY,120,60).相交(新矩形(VimapGamePage.X_pos.ElementAt(计数器),y_pos.ElementAt(计数器),120,60))){
余额=计数器*60;
}
否则{
计数器++;
}
}
//检查=正确;
}
否则{
y_pos.Add(posY);_Fall=true;//VimapGamePage.End_Reach=true;
}
}
公共无效移动X(p点){
如果(p.X=0和p.X 120和p.X 240){

如果(p.X>240&&p.X 360&&p.X请将您的代码添加到问题中。您可以使用单独的类来存储对象并对其进行初始化。事实上,没有任何代码,很难理解您面临的问题和可能的解决方案。请通过添加相关代码更新您的问题,以便我们可以帮助您。Actually我正在XNA中制作一个游戏。在这个游戏中,彩色条从屏幕顶部掉落,玩家必须形成完整的图像。我是dong,在类和对象的帮助下。然后需要创建“多少个对象?”。相反,我想创建单个对象,但要重新初始化它。初始化中的代码部分如下:…crShade=new CreateShade[Obj_num];for(int I=incr_Obj;Ipublic class CreateShade { public int posX; public int posY; public Color color; Random r = new Random(); private int width = 120; private int height = 60; public static bool _Fall; public static bool check; public static List<int> y_pos = new List<int>(); int balance = 0; public CreateShade(int x, int y, Color color) { int random = r.Next(0, 4); this.posY = y; this.posX = x; this.color = color; } public void draw(SpriteBatch batch) { batch.Draw(Vimap_ScreenManager.blank, new Rectangle(posX, posY, width, height), color); } public void update() { int counter = 0; if (posY != 740-balance) { posY += 10; if (counter != y_pos.Count) { if (new Rectangle(posX, posY, 120, 60).Intersects(new Rectangle(VimapGamePage.X_pos.ElementAt(counter), y_pos.ElementAt(counter), 120, 60))) { balance = counter * 60; } else { counter++; } } //check = true; } else { y_pos.Add(posY); _Fall = true; // VimapGamePage.End_Reach = true; } } public void Move_X(Point p) { if (p.X <= 240) { if (p.X >= 0 && p.X <= 120) { posX = 0; } else if (p.X > 120 && p.X <= 240) { posX = 120; } } else if (p.X > 240) { if (p.X > 240 && p.X <= 360) { posX = 240; } else if (p.X > 360 && p.X <= 480) { posX = 360; } } } }