Unity3d 在Unity中使用ScriptableObjects的NullReferenceException

Unity3d 在Unity中使用ScriptableObjects的NullReferenceException,unity3d,nullreferenceexception,scriptable-object,Unity3d,Nullreferenceexception,Scriptable Object,我在数据库中设置了一个名为“Card”的Scriptableobject,并试图在Scriptableobject中创建这些项目的可搜索列表。我将CardDatabase脚本附加到一个名为_CardDatabase的空游戏对象。我不知道我是否贴错了,或者我在这里做错了什么 我仍然收到以下错误: NullReferenceException:对象引用未设置为对象的实例 CardDatabase.GetCardByID(System.String缩写)(位于Assets/Scripts/CardDa

我在数据库中设置了一个名为“Card”的Scriptableobject,并试图在Scriptableobject中创建这些项目的可搜索列表。我将CardDatabase脚本附加到一个名为_CardDatabase的空游戏对象。我不知道我是否贴错了,或者我在这里做错了什么

我仍然收到以下错误:

NullReferenceException:对象引用未设置为对象的实例 CardDatabase.GetCardByID(System.String缩写)(位于Assets/Scripts/CardDatabase.cs:33)

//CardDatabase.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

 public class CardDatabase : MonoBehaviour
    {
        public CardList cards;
        private static CardDatabase instance;
    
    
        private void Awake()
        {
            if (instance = null)
            {
                instance = this;
                DontDestroyOnLoad(gameObject);
            }
            else
            {
                Destroy(gameObject);
            }
        }
    
    
        public static Card GetCardByID(string abbr)
        {
            return instance.cards.AllCards.FirstOrDefault(i=> i.abbr == abbr);
        }
    }
//CardList.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(fileName = "New Cards Database",menuName = "Cards Database")]
public class CardList : ScriptableObject
{
    public List<Card> AllCards;

}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
[CreateAssetMenu(fileName=“新建卡片数据库”,menuName=“卡片数据库”)]
公共类卡片列表:ScriptableObject
{
公开列出所有卡片;
}

这是否回答了您的问题?在代码中添加一些日志语句,看看哪个字段或属性为null。在哪里附加脚本是最好的?这里的行:if(instance=null)是一个拼写错误,if not在代码中修复为:if(instance==null)。@Nikaas非常感谢!我没听清楚。我想我有一个这样的星期了!