c# - 在构建游戏上托管比赛时,Unity UNET 网络服务器未激活
问题描述
我正在使用 Unet 在 Unity 上开发多人游戏,当我通过在 Unity 编辑器上玩游戏来举办比赛时,一切都按预期进行,但是当我在构建的游戏上举办比赛时(通过单击“构建和运行游戏”运行”),网络功能不起作用。我不能很好地理解正在发生的事情,但我想我明白网络服务器在某种程度上处于非活动状态。这很奇怪,因为正如我之前所说,当我通过在 Unity 编辑器中玩游戏来主持比赛时,网络服务器会工作。
//这个函数产生一个敌人预制件
void Spawn()
{
GameObject enemy = Instantiate(enemyPrefab, spawnPoint.position,
spawnPoint.rotation);
NetworkServer.Spawn(enemy);
}
/* 这个函数在玩家脚本中,当敌人或敌人的子弹碰到玩家时,玩家会受到伤害 */
private void OnTriggerEnter2D(Collider2D hitInfo)
{
//Enemy enemy = hitInfo.GetComponent<Enemy>();
if (hitInfo.tag == "Enemy" || hitInfo.tag == "EnemyBullet")
{
RpcTakeDamage(10, "hit by enemy");
}
//Instantiate(impactEffect, transform.position, transform.rotation);
}
[ClientRpc]
public void RpcTakeDamage(int _amount, string _sourceID)
{
if (!isHit)
{
StartCoroutine("HurtColor");
currentHealth -= _amount;
Debug.Log(transform.name + " now has " + currentHealth + " health ");
if (currentHealth <= 0)
{
Die(_sourceID);
}
}
}
/* 这个函数在子弹行为脚本中,当子弹碰到敌人时,敌人被摧毁。*/
private void OnTriggerEnter2D(Collider2D hitInfo)
{
playerMovement player = hitInfo.GetComponent<playerMovement>();
if (hitInfo.tag == "Enemy")
{
player = FindObjectOfType<playerMovement>();
player.bombPower = player.bombPower + UnityEngine.Random.Range(0.1f, 0.5f);
if(hitInfo.tag == "Enemy")
{
//Enemy enemy = FindObjectOfType<Enemy>();
//enemy.currentHealth -= damage;
player.CmdEnemyShot(hitInfo.transform.name, this.transform.name); //change this.transform.name with the player's name
}
Destroy(gameObject);
}
以下是一些错误消息:
/* 当一个玩家加入比赛时,我得到这个警告,我不明白什么命令不能发送,可能来自 NetworkBehaviour 类 */
"Trying to send command for object without authority."
/* 这个错误显示当一个敌人被生成时,敌人仍然可见,但显然只在客户端 */
"SpawnObject for EnemyUpRight(Clone) (UnityEngine.GameObject),
NetworkServer is not active. Cannot spawn objects without an active server."
/* 当敌人的子弹击中 plyer 时,会出现此错误并且玩家无法受到伤害。*/
"RPC Function RpcTakeDamage called on client."
//这个警告也会出现
"Did not find target for sync message for 9"
//当一个敌人被击中时,敌人没有死,这个错误就会出现
"SpawnObject for Marisa_bullet(Clone) (UnityEngine.GameObject), NetworkServer is not active. Cannot spawn objects without an active server."
如果您需要我的项目来理解,这里是链接。 代码可能有点混乱。
解决方案
推荐阅读
- node.js - java.lang.RuntimeException:无法创建服务 io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
- javascript - Discord.js setPresence 未设置
- angular - 如何在 Jest 中为 Angular 中的 Http 拦截器编写单元测试
- python - 将 JSON 转换为 panda 数据框的问题
- java - Project Reactor - 并行执行
- javascript - esri arcgis 在 4.x 中发出点击事件不起作用
- flutter - 如何在 Flutter 中使通知栏变暗?
- google-cloud-platform - 从 Google Cloud Composer 读取和写入 Google Secrets Manager Secret
- django - 如果 contion 在 django 模板中使用变量(真或假)检查,该怎么办
- python-3.x - 如何确定最适合 HDP3.1.5 和 RHEL7.9 的最新稳定 Python3.x