我有一个基于Cocos2D XNA和MonoGame的游戏项目。我想在CCSprite类中添加一些自定义逻辑,因此我创建了一个继承自CCSprite的类。我添加了一个虚拟的auto属性,并尝试使用此类,但由于某些原因,作为我的自定义sprite类的实例创建的sprites不会显示在图层上,而作为CCSprite类实例的sprites完全可以。

代码如下:

public class Sprite: CCSprite {
  public string SomeProp {get; set;}
}
...
line1: var mySprite1 = new Sprite("texture.png");
line2: var mySprite1 = new CCSprite("texture.png");
AddChild(mySprite1);

如果我使用line1并注释掉第2行,则不会显示mySprite 1。否则-如果mySprite是CCSprite的实例-则可以正常工作。

这个问题的根源可能是什么?

最佳答案

您没有使用自己的Sprite类调用CCsprite的构造函数。

Sprite:CCSprite{
   public Sprite():base()
   {
    //blabla
   }
}

base()正在将CCSprite的构造函数调用为您正在继承的类
如果要传递参数,请执行以下操作:
Sprite:CCSprite{
       public Sprite(string imgpath):base(imgpath)
       {
        //blabla
       }
    }

现在,我已经通过构造函数传递了一个字符串。

关于c# - cocos2d-xna : sprite is not drawn if using instance of a class inherited from sprite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22765583/

10-10 07:46