如何通过Unity3d中的按钮访问“SaveWorld()”?

ctzwtxfj  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(151)

所以,我创建了一个保存系统。我有保存/加载玩家和保存/加载世界数据。除了“SaveWorld()”函数外,它们都可以通过按钮访问。我不确定发生了什么。“SaveWorld”和“LoadWorld”都连接到同一个空游戏对象。保存/加载玩家连接到玩家游戏对象。
下面是SaveWorldData()脚本

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

public class SaveWorldData : MonoBehaviour
{
    public void SaveWorld(WorldData worldData)
    {
        SaveSystem.SaveWorld(worldData);
        Debug.Log("worldData Saved");
    }
}

以下是LoadWorldData脚本的功能

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using static Calendar;

public class LoadWorldData : MonoBehaviour
{
    public void LoadWorld()
    {
        WorldData worldData = SaveSystem.LoadWorld();

        // Expedition Start and End time
        DateTime expeditionEndTime = worldData.ExpeditionEnd;
        DateTime expeditionStartTime = worldData.ExpeditionStart;
    }
}

保存按钮UI如下:

WorldManager游戏对象为空:

我已经删除并附加到另一个游戏对象的脚本,但没有任何变化。

unhi4e5o

unhi4e5o1#

注意SaveWorld()函数有一个参数WorldData worldData。按钮不能给予参数,因此它不能调用方法SaveWorld()。您需要有一个没有参数的公共方法。
如何修复:除非你想改变你的SaveWorld()方法没有参数,我会建议添加另一个方法到SaveWorldData,它不接受任何参数,获取WorldData(从你得到它的地方)和调用SaveWorld()

相关问题