【问题标题】:Error CS0246: The type or namespace name 'StreamingContext' could not be found (are you missing a using directive or an assembly reference?)错误 CS0246:找不到类型或命名空间名称 \'StreamingContext\'(是否缺少 using 指令或程序集引用?)
【发布时间】:2022-11-09 21:13:43
【问题描述】:

尝试编写此脚本以在我的游戏中保存和加载时出现这些错误。

Assets\Scripts\Save System\SaveData.cs(62,40):错误 CS0246:类型 或命名空间名称 'StreamingContext' 找不到(你是 缺少 using 指令或程序集引用?)

Assets\Scripts\Save System\SaveData.cs(13,31):错误 CS0246:类型 或命名空间名称“PlaceableObjectData”找不到(你是 缺少 using 指令或程序集引用?)

Assets\Scripts\Save System\SaveData.cs(61,6):错误 CS0246:类型 或命名空间名称“OnDeserializedAttribute”找不到(是 您缺少 using 指令或程序集引用?)

Assets\Scripts\Save System\SaveData.cs(61,6):错误 CS0246:类型 或找不到名称空间名称“OnDeserialized”(您是否缺少 using 指令或程序集引用?)

那是我正在处理的脚本:

    using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.Serialization;


[Serializable]

public class SaveData
{
    public static int IdCount;

    public Dictionary<string, PlaceableObjectsData> placeableObjectDatas =
        new Dictionary<string, PlaceableObjectsData>();

    public static string GenerateId()
    {
        IdCount++;
        return IdCount.ToString();

    }

     public void AddData(Data data)
    {
        if (data is placeableObjectDatas plObjData)

        {

            if (placeableObjectDatas.ContainsKey(plObjData.ID))
        {
            placeableObjectDatas[plObjData.ID] = plObjData;

        }
        else
        
        {
            placeableObjectDatas.Add(plObjData.ID, plObjData);
        }

        }

   }

      public void RemoveData(Data data)
       {

        if (data is placeableObjectDatas plObjData)

        {

            if (placeableObjectDatas.ContainsKey(plObjData.ID))
            {
                placeableObjectDatas.Remove(plObjData.ID);

            }

        }

    }

    [OnDeserialized]
    internal void OnDeserializedMethod(StreamingContext context)
    {
    placeableObjectDatas ??= new Dictionary<string, PlaceableObjectsData>();

    }

}

编辑:

这是 PlaceableObjectData 的脚本:

using System;
using UnityEngine;



public class PlaceableObjectsData : Data
{
    public string assetName;
    public Vector3 position;
}

编辑 2

Assets\Scripts\Save System\SaveSystem.cs(17,13):错误 CS0103: 当前上下文中不存在名称“目录”

Assets\Scripts\Save System\SaveSystem.cs(20,13):错误 CS0103: 当前上下文中不存在名称“目录”

Assets\Scripts\Save System\SaveData.cs(26,21):错误 CS0246:类型 或命名空间名称“placeableObjectDatas”找不到(你是 缺少 using 指令或程序集引用?)

Assets\Scripts\Save System\SaveSystem.cs(31,28):错误 CS0246: 找不到类型或命名空间名称“JsonSerializerSettings” (您是否缺少 using 指令或程序集引用?)

Assets\Scripts\Save System\SaveSystem.cs(32,42):错误 CS0103: 当前上下文中不存在名称“ReferenceLoopHandling”

Assets\Scripts\Save System\SaveSystem.cs(34,29):错误 CS0103: 当前上下文中不存在名称“JsonConvert”

Assets\Scripts\Save System\SaveSystem.cs(36,19):错误 CS1061: 'string' 不包含 'WriteAllText' 的定义,并且没有 接受第一个参数的可访问扩展方法“WriteAllText” 可以找到“字符串”类型的(您是否缺少 using 指令或 装配参考?)

Assets\Scripts\Save System\SaveData.cs(48,21):错误 CS0246:类型 或命名空间名称“placeableObjectDatas”找不到(你是 缺少 using 指令或程序集引用?)

Assets\Scripts\Save System\SaveSystem.cs(42,22):错误 CS1061: “字符串”不包含“存在”的定义且不可访问 扩展方法“存在”接受“字符串”类型的第一个参数 可以找到(您是否缺少 using 指令或程序集 参考?)

Assets\Scripts\Save System\SaveSystem.cs(45,42):错误 CS1061: 'string' 不包含 'ReadAllText' 的定义,并且没有 接受第一个参数的可访问扩展方法“ReadAllText” 可以找到“字符串”类型的(您是否缺少 using 指令或 装配参考?)

Assets\Scripts\Save System\SaveSystem.cs(47,13):错误 CS0246: 找不到类型或命名空间名称“saveData”(您是否缺少 using 指令或程序集引用?)

Assets\Scripts\Save System\SaveSystem.cs(47,31):错误 CS0103: 当前上下文中不存在名称“JsonConvert”

Assets\Scripts\Save System\SaveSystem.cs(47,61):错误 CS0246: 找不到类型或命名空间名称“saveData”(您是否缺少 using 指令或程序集引用?)

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    您可以通过在文件顶部添加 using System.Runtime.Serialization; 来修复错误 1,3 和 4。

    但我从未听说过 PlaceableObjectData,它可能是您在其他命名空间中创建的自定义类吗?然后,您还必须使用 using 关键字导入该命名空间。

    【讨论】:

    • 感谢您的解决方案,我现在仍然只有一个错误 AssetsScriptsSave SystemSaveData.cs(14,31):错误 CS0246:找不到类型或命名空间名称“PlaceableObjectData”(您是否缺少 using 指令或程序集引用?)
    • @kyloriusbeno 您还必须导入定义PlaceableObjectData 的命名空间,我不知道是哪个命名空间,因为您没有提供定义或说该类来自第三方库。
    • 我编辑了帖子,您可以看到具有可放置对象数据的脚本
    • @kyloriusbeno您在那里打了一个小错字,您必须在第一个脚本文件中将“PlaceableObjectData”更正为“PlaceableObjectsData”。
    • 我是否必须更正所有包含此内容的行?因为 PlaceableObjectData 有多行,或者它是特定行
    【解决方案2】:

    错误 CS0246:找不到类型或命名空间名称“VideoSurface”(您是否缺少 using 指令或程序集引用?)

    我正面临这个错误我没有任何脚本但仍然在控制台(统一)中提示这个错误我将它与 MRTK 一起用于 Hololens2 有人可以告诉我我该怎么做。

    【讨论】:

      猜你喜欢
      • 2022-12-08
      • 2023-01-12
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多