C#-将类的新实例添加到数组中
我对C#很陌生,所以如果我问了一个愚蠢的问题,或者我问错了,请原谅 这是我的密码:C#-将类的新实例添加到数组中,c#,unity3d,C#,Unity3d,我对C#很陌生,所以如果我问了一个愚蠢的问题,或者我问错了,请原谅 这是我的密码: using UnityEngine; using System; namespace DuloGames.UI { [Serializable] public class UISpellInfo { public int ID; public string Name; public Sprite Icon; public s
using UnityEngine;
using System;
namespace DuloGames.UI
{
[Serializable]
public class UISpellInfo
{
public int ID;
public string Name;
public Sprite Icon;
public string Description;
public float Range;
public float Cooldown;
public float CastTime;
public float PowerCost;
public float test;
[BitMask(typeof(UISpellInfo_Flags))]
public UISpellInfo_Flags Flags;
}
}
这是我的UIspellDatabase
课程:
using UnityEngine;
namespace DuloGames.UI
{
public class UISpellDatabase : ScriptableObject {
#region singleton
private static UISpellDatabase m_Instance;
public static UISpellDatabase Instance
{
get
{
if (m_Instance == null)
m_Instance = Resources.Load("Databases/SpellDatabase") as UISpellDatabase;
return m_Instance;
}
}
#endregion
public UISpellInfo[] spells;
/// <summary>
/// Get the specified SpellInfo by index.
/// </summary>
/// <param name="index">Index.</param>
public UISpellInfo Get(int index)
{
return (spells[index]);
}
/// <summary>
/// Gets the specified SpellInfo by ID.
/// </summary>
/// <returns>The SpellInfo or NULL if not found.</returns>
/// <param name="ID">The spell ID.</param>
public UISpellInfo GetByID(int ID)
{
for (int i = 0; i < this.spells.Length; i++)
{
if (this.spells[i].ID == ID)
return this.spells[i];
}
return null;
}
}
}
我可以清楚地看到这个类的所有实例UISpellInfo
。
我想要实现的只是向arrayUISpellInfo[]咒语添加更多实例代码>
据我所知,类UISpellInfo
的所有实例都加载在这里UISpellInfo[]拼写
然后在我在SeeAllInstances()
中的foreach上,我可以看到所有实例以及每个实例的数据
如果我问得对的话,我的问题是如何在UISpellInfo[]拼写中添加更多实例代码>
有人能帮我吗?我想你需要在你的场景中使用,因为数组
是用一个大小声明的,我们必须在添加和删除元素时保持跟踪,以了解其中有多少元素,哪些插槽有价值或没有价值,以便我们可以在最后可用的索引中添加新项目
对于我们事先不知道将放入其中的元素数量的情况,List
是一个更好的选择,如果您正在使用它,那么您只需要在实例上调用Add()
方法来添加新项
在这种情况下,您的代码如下所示:
public List<UISpellInfo> spells;
我认为您需要在您的场景中使用,因为数组
是用一个大小声明的,我们必须在添加和删除元素时进行跟踪,以了解其中有多少元素以及哪些插槽有值或无值,以便我们可以在最后一个可用索引中添加新项
对于我们事先不知道将放入其中的元素数量的情况,List
是一个更好的选择,如果您正在使用它,那么您只需要在实例上调用Add()
方法来添加新项
在这种情况下,您的代码如下所示:
public List<UISpellInfo> spells;
要将对象添加到数组中,需要使用新元素重建数组,并将其分配给UISpellInfo[]拼写代码>这里有一种方法可以用来完成此任务:
public void AddUISpellInfo(UISpellInfo infoToAdd){
Array.Resize(参考this.spellInfoArray,this.spellInfoArray.Length+1);
this.spellInfoArray[this.spellInfoArray.Length-1]=infoToAdd;
}
该方法将您希望添加的任何项作为显式参数,并通过隐式参数this引用现有数组。您可以查看有关Array.Resize()
的更多信息要将对象添加到数组中,您需要使用新元素重建数组,并将其分配给UISpellInfo[]拼写代码>这里有一种方法可以用来完成此任务:
public void AddUISpellInfo(UISpellInfo infoToAdd){
Array.Resize(参考this.spellInfoArray,this.spellInfoArray.Length+1);
this.spellInfoArray[this.spellInfoArray.Length-1]=infoToAdd;
}
该方法将您希望添加的任何项作为显式参数,并通过隐式参数this引用现有数组。您可以在Array.Resize()
上看到更多信息,但是这个数组UISpellInfo[]拼写
将保持不变?@TonyStark您可以将您的数组替换到列表中
,并在其上调用Add()
,以将nee对象与以前的对象一起插入其中。非常感谢您的帮助。但是如果我用这个this.spells.Count
替换这个this.spells.Length
,你能检查一下这个函数吗?是的@TonyStarkCount
会很乐意给出集合中的物品数量。但是这个数组UISpellInfo[]spells
将保持不变?@TonyStark您可以将您的数组替换到列表中
,并在其上调用Add()
,以将nee对象与以前的对象一起插入其中。非常感谢您的帮助。但是,如果我只将这个this.spells.Length
替换为这个this.spells.Count
,那么你能检查这个函数吗?是的@TonyStarkCount
将非常乐意给出集合中的物品数量。
UISpellDatabase.Instance.spells.Add(new UISpellInfo());