Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-将类的新实例添加到数组中_C#_Unity3d - Fatal编程技术网

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

我对C#很陌生,所以如果我问了一个愚蠢的问题,或者我问错了,请原谅

这是我的密码:

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
。 我想要实现的只是向array
UISpellInfo[]咒语添加更多实例

据我所知,类
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
,你能检查一下这个函数吗?是的@TonyStark
Count
会很乐意给出集合中的物品数量。但是这个数组
UISpellInfo[]spells
将保持不变?@TonyStark您可以将您的数组替换到
列表中
,并在其上调用
Add()
,以将nee对象与以前的对象一起插入其中。非常感谢您的帮助。但是,如果我只将这个
this.spells.Length
替换为这个
this.spells.Count
,那么你能检查这个函数吗?是的@TonyStark
Count
将非常乐意给出集合中的物品数量。
UISpellDatabase.Instance.spells.Add(new UISpellInfo());