You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#中给OpenSea NFT元数据加属性时遇空引用异常求助

解决C#中Attribute数组赋值的NullReferenceException异常

触发NullReferenceException的原因是:创建RootObject实例后,attributes数组默认是null,直接访问rootObject.attributes[0]时,相当于尝试访问一个未初始化的空对象的索引,自然会抛出异常。

解决方法一:初始化数组并创建Attribute实例

修改updatethePlayerData()函数,先为数组分配内存,再实例化数组中的Attribute对象:

public void updatethePlayerData()
{
     RootObject rootObject = new RootObject();
    rootObject.description = "aaa";
    rootObject.image = "bbb";
    rootObject.external_url = "ccc";
    rootObject.name = "dddd";
    
    // 初始化数组,设置需要的长度(这里设为1)
    rootObject.attributes = new Attribute[1];
    // 为数组元素创建Attribute实例
    rootObject.attributes[0] = new Attribute();
    
    rootObject.attributes[0].trait_type = "character_class";
    rootObject.attributes[0].value = "name of character";
}

解决方法二:改用List(更灵活)

如果需要动态添加多个属性,建议把数组换成List<Attribute>,这样无需提前指定长度:

首先修改RootObject类:

public class RootObject
{
    public string description;
    public string external_url;
    public string image;
    public string name;
    // 初始化List<Attribute>,避免null
    public List<Attribute> attributes = new List<Attribute>();
}

然后在函数中添加属性:

public void updatethePlayerData()
{
     RootObject rootObject = new RootObject();
    rootObject.description = "aaa";
    rootObject.image = "bbb";
    rootObject.external_url = "ccc";
    rootObject.name = "dddd";
    
    // 直接添加新的Attribute实例并赋值
    rootObject.attributes.Add(new Attribute 
    {
        trait_type = "character_class",
        value = "name of character"
    });
}

内容的提问来源于stack exchange,提问作者immi khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:35:19