如果我们不从类,类方法和大小信息中创建对象,是否仍在执行Program时加载到ram?

问题描述 投票:0回答:1

我打算用Unity / C#编写纸牌游戏。在这个游戏中,每张卡都是主卡类派生的不同类。并且它们将覆盖Card虚拟功能。我的问题是,如果有1000张或更多的卡,执行游戏时,每个卡类的方法和大小信息都将加载到ram上吗?如果是这样,我们如何管理这一时期?我只想将玩家卡组中的卡片数据加载到公羊。您有什么建议?预先感谢。

class unity3d stack heap ram
1个回答
0
投票

如果您认为这可能是个问题,请进行快速测试。使用一个或两个虚拟方法创建您的主类,然后创建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#中,类的代码甚至不必在创建该类的实例之前加载到内存中,然后您获得的只是元数据,而实际调用的函数除外。即时编译器会根据需要处理本地代码的加载和编译。当然,除非您预先编译安装。

不过,还请记住,一旦编译,代码将在程序的整个生命周期中保留在内存中。因此,如果可能在一张游戏中使用所有可能的卡,那么您必须确保所有卡的编译代码都适合内存。

© www.soinside.com 2019 - 2024. All rights reserved.