小编ads*_*cik的帖子

未调用 ReadJson

我想要达到的目标。我有一个包含一些属性/对象的类。我只想用我的自定义序列化程序序列化那些满足 CanConvert 条件的对象,其他的应该默认处理。

问题是[JsonConverter(typeof(UnityObjectConverter))]它可以正确序列化但反序列化失败。可能是因为我只保存了对象的路径,而不是整个对象,并且当一些内部检查(我不明白为什么)发生时,它失败并返回 null,因为ReadJson从未调用过。

当我使用设置时,它给我带来了更多的问题,它解决了因为它没有序列化其余的问题。我不想对整个类进行序列化,因为这样它就不会很通用,因为有几个对象继承了该类。类本身不是抽象的,因此可能有一些对象只使用该类。如果有人可以提供帮助,我会很高兴。谢谢

 public class UnityObjectConverter : JsonConverter {

public override bool CanConvert(Type objectType) {
    Debug.Log(objectType.BaseType == typeof(UnityEngine.Object));
    return objectType.BaseType == typeof(UnityEngine.Object);
}

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
    Debug.Log("read");
    return UnityEditor.AssetDatabase.LoadAssetAtPath(reader.ReadAsString(), objectType);
}

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
    Debug.Log("write");
    var item = (UnityEngine.Object)value;
    writer.WriteValue(UnityEditor.AssetDatabase.GetAssetPath(item));
    writer.Flush();
}

public override bool CanRead {
    get {
        return true;
    }
}

public override bool CanWrite …
Run Code Online (Sandbox Code Playgroud)

c# json.net unity-game-engine

5
推荐指数
1
解决办法
1979
查看次数

找不到谷歌地图片段

我一直坚持map在标签内创建.getActivity().getSupportFragmentManager().findFragmentById(R.id.map) returns null.即使我用它替换它getChildFragmentManager().findFragmentById(R.id.map).

我对此很新,所以我可能在其他地方出错了,但我不知道它可能是什么.

public class FragmentMap extends Fragment implements OnMapReadyCallback 
@Override
public void onStart() {
    super.onStart();
    mMapFragment = (SupportMapFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.map);
    mMapFragment.getMapAsync(this);
}
Run Code Online (Sandbox Code Playgroud)

XML

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud)

tabs android google-maps

1
推荐指数
1
解决办法
406
查看次数

冗余命名空间声明向量

我是c ++的新手所以有很多我不知道的事情,这就是为什么我想问一个有更多经验的人.

std::vector<CProp*> filter(const string &deptName, const string &city, const string &country)const {
        ...
}
Run Code Online (Sandbox Code Playgroud)

我正在使用std命名空间,所以std ::应该是多余的,但如果我删除它,编译器会显示错误(首先是这个声明没有存储类或类型说明符?).这是为什么?我从来没有在类中的其他地方使用它,所以不应该有任何冲突我也只使用std命名空间.

#include <cassert>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <iomanip>
#include <string>
#include <memory>
#include <vector>
#include <algorithm>
using namespace std;

class ClassName {
    public:
        ...
    private:
        vector<CProp*> vector;

        vector<CProp*> filter(const string &deptName, const string &city, const string &country)const {
            return nullptr;
        }
}
Run Code Online (Sandbox Code Playgroud)

c++ c++11

-2
推荐指数
1
解决办法
205
查看次数

标签 统计

android ×1

c# ×1

c++ ×1

c++11 ×1

google-maps ×1

json.net ×1

tabs ×1

unity-game-engine ×1