unity mieeor如何解决Command Function System.Void SaveManager::cmdSave(System.String,System.Object) called on SaveManager without authority.
时间: 2023-06-19 14:10:45 浏览: 128
这个错误是因为尝试在没有权限的情况下调用`SaveManager::cmdSave(System.String,System.Object)`函数。这通常发生在多人游戏中,因为只有服务器才有权利保存游戏状态。
解决这个问题的方法是确保只有服务器才能调用`SaveManager::cmdSave(System.String,System.Object)`函数。可以使用`[Command]`特性来标记该函数,以确保只有服务器才能调用它。同时,你还需要确保只有服务器实例化了`SaveManager`。
以下是一个示例代码:
```csharp
using UnityEngine;
using Mirror;
public class SaveManager : NetworkBehaviour
{
[Command]
public void CmdSave(string saveData, object additionalData)
{
// 只有服务器才能调用该函数
// 在这里保存游戏状态
}
}
```
确保只有服务器实例化`SaveManager`:
```csharp
using UnityEngine;
using Mirror;
public class GameManager : NetworkBehaviour
{
public GameObject saveManagerPrefab;
public override void OnStartServer()
{
base.OnStartServer();
// 只有服务器实例化 SaveManager
GameObject saveManagerObject = Instantiate(saveManagerPrefab);
NetworkServer.Spawn(saveManagerObject);
}
}
```
这样就能解决该错误了。
阅读全文