我打算用Unity / C#编写纸牌游戏。在这个游戏中,每张卡都是主卡类派生的不同类。并且它们将覆盖Card虚拟功能。我的问题是,如果有1000张或更多的卡,执行游戏时,每个卡类的方法和大小信息都将加载到ram上吗?如果是这样,我们如何管理这一时期?我只想将玩家卡组中的卡片数据加载到公羊。您有什么建议?预先感谢。
如果您认为这可能是个问题,请进行快速测试。使用一个或两个虚拟方法创建您的主类,然后创建100个派生类,每个派生类都将以相同的方式覆盖主类方法,应该足够容易。类似于:
public class MainCard {
// properties
// 2 methods
}
加载并运行程序(简单地实例化一个MainCard
对象,然后确定它占用了多少内存。
然后,创建100个派生类,这些派生类将覆盖MainCard
中的方法。重写的虚拟方法的实现可以相同。
public class Card01 : MainCard {
// override both MainCard methods
}
public class Card02 : MainCard {
// copy Card01 implementation here
}
进行100堂课。查看需要多少内存。
[请记住,在C#中,类的代码甚至不必在创建该类的实例之前加载到内存中,然后您获得的只是元数据,而实际调用的函数除外。即时编译器会根据需要处理本地代码的加载和编译。当然,除非您预先编译安装。
不过,还请记住,一旦编译,代码将在程序的整个生命周期中保留在内存中。因此,如果可能在一张游戏中使用所有可能的卡,那么您必须确保所有卡的编译代码都适合内存。