c# - 如何在包含该类的对象的类中创建静态数组或列表 c#
问题描述
我在网上找不到任何东西,所以如果这个问题太基本,我很抱歉。
我想创建一个包含该类所有对象的静态列表的类。
这些方面的东西:
public class PlanetSpawner : MonoBehaviour
{
public static List<PlanetSpawner> planetList = new List<PlanetSpawner>();
public PlanetSpawner(Vector3 aStartingCoord, GameObject planet)
{
GameObject.Instantiate(planet,aStartingCoord,new Quaternion(0,0,0,0));
planet.transform.position = aStartingCoord;
planetList.Add(object that called the constructor);
}
}
此代码用于统一脚本,对象是在另一个方法(和类)中创建的:
public GameObject planetPrefab;
// Start is called before the first frame update
void Start()
{
PlanetSpawner testPlanet = new PlanetSpawner(new Vector3(1, 1, 1), planetPrefab);
}
我知道我可以这样做:
public GameObject planet;
// Start is called before the first frame update
void Start()
{
PlanetSpawner testPlanet = new PlanetSpawner(new Vector3(1, 1, 1), planet);
PlanetSpawner.planetList.Add(testPlanet);
}
并修改构造函数:
public class PlanetSpawner : MonoBehaviour
{
public static List<PlanetSpawner> planetList = new List<PlanetSpawner>();
public PlanetSpawner(Vector3 aStartingCoord, GameObject planet)
{
GameObject.Instantiate(planet,aStartingCoord,new Quaternion(0,0,0,0));
planet.transform.position = aStartingCoord;
}
}
但我相信我想做的方式更干净,更容易使用
解决方案
您可以只使用this
来引用当前对象:
public class PlanetSpawner : MonoBehaviour
{
public static List<PlanetSpawner> planetList = new List<PlanetSpawner>();
public PlanetSpawner(Vector3 aStartingCoord, GameObject planet)
{
GameObject.Instantiate(planet,aStartingCoord,new Quaternion(0,0,0,0));
planet.transform.position = aStartingCoord;
planetList.Add(this);
}
}
推荐阅读
- ruby-on-rails - Active Storage Rails 5.2.1 中的字节范围支持
- r - R:从每个基因的 t.test 中获取 p 值
- java - 如何包含添加到 SpringBoot 项目中的自定义库的子依赖项?
- android - 将 Strings.xml 中的 String 中的 1 个单词或句子大写
- android - Android MVP 持久化
- python - Json 将添加的键放在一起而不创建新的字典
- r - 在 Shiny 应用程序中重置可操作的值
- java - 我可以在另一个注释中使用属性中的 Spring @Value 变量吗?
- java - CDI 1.1:@Observes @Initialized(TransactionScoped.class) 应该工作吗?
- java - 类名必须在方法之前,必须是 MatcherAssert.assertThat() 而不仅仅是 assertThat()?