小编jos*_*son的帖子

Unity 联网就绪检查

尝试使用 PUN2 创建就绪检查,以便所有玩家同时加载到游戏场景中,但我不明白如何检查其他玩家的自定义属性并记录当前有多少玩家准备好以及是否全部准备好准备好然后开始游戏。我认为我应该为每个玩家设置一个自定义属性,但我不确定它是否有效。

 public class HeroSelectController : MonoBehaviour
 {
     [HideInInspector]
     public string selectedHero;

     private PhotonView PV;
     private bool PlayerReady = false;
     private ExitGames.Client.Photon.Hashtable _playerCustomProperties = new ExitGames.Client.Photon.Hashtable();

     private void Update()
     {
         Debug.Log("Player Ready = " + _playerCustomProperties["PlayerReady"]);
     }

     private void HeroSelect()
     {
         PlayerReady = true;    
         selectedHero = "PlayerTest";
         PhotonNetwork.SetPlayerCustomProperties(_playerCustomProperties);
         _playerCustomProperties["PlayerReady"] = PlayerReady;
     }

     public void OnClickHeroButton()
     {
         HeroSelect();

         if (PhotonNetwork.IsMasterClient)
         {
             foreach (var photonPlayer in PhotonNetwork.PlayerList)
             {
                 photonPlayer.CustomProperties["PlayerReady"] = true;
                 PhotonNetwork.LoadLevel(3);
             }
         }

     }
 }
Run Code Online (Sandbox Code Playgroud)

目前发生的情况是,主客户端可以开始游戏,而不管其他人的状态如何。感觉我可能想得太多了,并且有一个非常相似的解决方案,因为我希望这样的功能很常见,因为我希望在许多在线游戏中使用类似的功能,所以如果我要完全错误请给我指出一个更合适的方向

c# unity-game-engine photon

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

查找字符串并替换 XML 中的部分字符串

我有一个 xml 文件,如果 xml 中的一行的一部分与字符串匹配,则替换该 xml 行的一部分。我确实相信这可能非常简单,但真的无法弄清楚如何去做。下面我展示了一个非常小的 XML 片段,但它应该足以理解我想要做什么

<?xml version="1.0" encoding="utf-8"?>
<Server ObjId="SERVER01" Version="1123" AreaOfResponsibility="Area2" AreaCode="ODA">
  <SubSystems>
    <SubSystem ObjId="SS001" IPAddressA="192.168.103.16" IPAPort="0" IPAddressB="192.168.103.16" IPBPort="0">
Run Code Online (Sandbox Code Playgroud)

我想要做的是当 ObjId="SS001" 在 XML 中用 IPAPort="2115" 替换 IPAPort="0" 并保存它。最初我这样做的方式是通过如下所示的硬编码,这只是不可扩展的。我想要的是当 ObjId="" = 一个变量用 IPAPort="$AnotherVariable" 替换 IPAPort="0" 但不必有我目前拥有的长替换参数时

[XML]$Con = Get-Content Path\To\XML
$Con | % { $_.Replace('ObjId="SS001" IPAddressA="192.168.103.16" IPAPort="0" IPAddressB="192.168.103.16" IPBPort="0"', 'ObjId="SS001" IPAddressA="192.168.103.16" IPAPort="2115" IPAddressB="192.168.103.16" IPBPort="0"')} | Set-Content $MT700XMLPath
Run Code Online (Sandbox Code Playgroud)

基本上我只是想要一种更简洁的写法

xml powershell file

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

标签 统计

c# ×1

file ×1

photon ×1

powershell ×1

unity-game-engine ×1

xml ×1