// Update is called once per frame void Update() { partyMember = partySystem.GetPartyMember(); // パーティーメンバーを取得する if (partyMember != null) { ShowMember(); } else { ShowEmptyMember(); } }
public void AddExp(int exp) { // パーティーメンバーを格納する変数 GameObject[] partyMembers = partySystem.GetPartyMember(); // パーティーメンバーが2人以上のとき if (partyMembers != null && partyMembers.Length > 1) { // expを変更する(パーティーメンバーの数だけ経験値を少し減らす exp = (int)((float)exp * (1f - (float)partyMembers.Length / 10f)); // パーティーメンバー分繰り返す foreach (GameObject partyMember in partyMembers) { // RPCを送信し、経験値を加算させる photonView.RPC("AddExpRpc", partyMember.GetPhotonView().owner, exp); } } // パーティーがいなければ else { // EXPをそのまま加算する AddExpRpc(exp); } }
/// <summary> /// パーティーメンバーのステータスを更新する /// </summary> void UpdatePartyStatus() { // パーティーメンバーのリストを取得する GameObject[] partyMember = partySystem.GetPartyMember(); // 自分が発見されたら1を設定する int serachMeInParty = 0; // パーティーメンバーがいる場合処理を行う if (partyMember != null && partyMember.Length != 0) { // パーティーメンバーの数だけ繰り返す for (int i = 0; i < partyMember.Length; i++) { // 自分でなければ処理を行う if (partyMember[i].GetPhotonView().ownerId != PhotonNetwork.player.ID) { // ノンアクティブだったら if (!partyStatusWindow[i - serachMeInParty].gameObject.activeInHierarchy) { partyStatusWindow[i - serachMeInParty].gameObject.SetActive(true); } // プレイヤーキャラを設定する partyPlayerChar[i - serachMeInParty] = partyMember[i].GetComponent <PlayerChar>(); // パーティーウィンドウのシステムにプレイヤーキャラを設定する if (partyStatusWindow[i - serachMeInParty].playerChar != partyPlayerChar[i - serachMeInParty]) { partyStatusWindow[i - serachMeInParty].SetPlayerChar(partyPlayerChar[i - serachMeInParty]); } } // 自分が発見されたら配列の添え字をずらすためにフラグを立てる else { serachMeInParty = 1; } } // パーティーメンバーがいない分だけ繰り返す for (int i = partyMember.Length - 1; i < partyStatusWindow.Length; i++) { // アクティブなら if (partyStatusWindow[i].gameObject.activeInHierarchy) { // 非アクティブにする partyStatusWindow[i].gameObject.SetActive(false); } } } // パーティーメンバーがいない場合 else { // パーティーステータスウインドウの数だけ繰り返す for (int i = 0; i < partyStatusWindow.Length; i++) { // パーティーステータスウインドウがアクティブなら if (partyStatusWindow[i].gameObject.activeInHierarchy) { // ノンアクティブにする partyStatusWindow[i].gameObject.SetActive(false); } // 配列の要素をクリアしておく partyPlayerChar[i] = null; } } }
// Update is called once per frame void Update() { // クリックされたら if (Input.GetMouseButtonDown(0)) { for (int i = 0; i < System.Enum.GetValues(typeof(TypeOfChat)).Length; i++) { // ボタンの上にマウスカーソルがあるかどうか if (buttons[i].OverlapPoint(Input.mousePosition)) { switch (i) { // 全体チャットに切り替える処理 case (int)TypeOfChat.ALL: // 全体チャットをオンにする allRoomChat.gameObject.SetActive(true); // 名前入力テキストをオフにする nameInput.gameObject.SetActive(false); // 他のチャットを非アクティブにする partyChatText.gameObject.SetActive(false); playerToPlayerChatText.gameObject.SetActive(false); logWindowText.gameObject.SetActive(false); // ボタンに全体送信のメソッドを登録 sendButton.onClick.RemoveAllListeners(); sendButton.onClick.AddListener(SendChatInputForAll); // 切り替えボタンの色を変更する setButtonsColor((int)TypeOfChat.ALL); nowChatNumber = TypeOfChat.ALL; // 現在チャット番号を切り替える break; // パーティーチャットに切り替える処理 case (int)TypeOfChat.PARTY: // パーティーメンバーがいなければ if (partySystem.GetPartyMember() == null) { // 現在のチャットが全体チャットなら if (nowChatNumber == 0) { // 全体チャットにPTに加入してない旨を記述する allRoomChat.text += CreateChatText("<color=yellow>パーティーに所属していません。</color>", allRoomChat.text); break; } // 現在のチャットが個別チャットなら else { // 個別チャットにPTに加入してない旨を記述する playerToPlayerChatText.text += CreateChatText("<color=yellow>パーティーに所属していません。</color>", playerToPlayerChatText.text); break; } } // パーティーメンバーが存在する場合 // パーティーチャットをオンにする partyChatText.gameObject.SetActive(true); // 名前入力テキストをオフにする nameInput.gameObject.SetActive(false); // 他のチャットを非アクティブにする allRoomChat.gameObject.SetActive(false); playerToPlayerChatText.gameObject.SetActive(false); logWindowText.gameObject.SetActive(false); // ボタンにパーティー送信のメソッドを登録 sendButton.onClick.RemoveAllListeners(); sendButton.onClick.AddListener(SendChatInputForPartyMember); // 切り替えボタンの色を変更する setButtonsColor((int)TypeOfChat.PARTY); nowChatNumber = TypeOfChat.PARTY; // 現在チャット番号を切り替える break; // 個別チャットに切り替える処理 case (int)TypeOfChat.PTOP: // 個別チャットをオンにする playerToPlayerChatText.gameObject.SetActive(true); // 名前入力テキストをオンにする nameInput.gameObject.SetActive(true); // 他のチャットを非アクティブにする allRoomChat.gameObject.SetActive(false); partyChatText.gameObject.SetActive(false); logWindowText.gameObject.SetActive(false); // ボタンに全体送信のメソッドを登録 sendButton.onClick.RemoveAllListeners(); sendButton.onClick.AddListener(SendChatInputForPlayer); // 切り替えボタンの色を変更する setButtonsColor((int)TypeOfChat.PTOP); nowChatNumber = TypeOfChat.PTOP; // 現在チャット番号を切り替える break; case (int)TypeOfChat.LOG: // ログウインドウをオンにする logWindowText.gameObject.SetActive(true); // 名前入力テキストをオフにする nameInput.gameObject.SetActive(false); // 他のチャットを非アクティブにする partyChatText.gameObject.SetActive(false); playerToPlayerChatText.gameObject.SetActive(false); allRoomChat.gameObject.SetActive(false); // ボタンに全体送信のメソッドを登録 sendButton.onClick.RemoveAllListeners(); //sendButton.onClick.AddListener(SendChatInputForAll); // 切り替えボタンの色を変更する setButtonsColor((int)TypeOfChat.LOG); nowChatNumber = TypeOfChat.LOG; // 現在チャット番号を切り替える break; } // 2つ以上のボタンが同時に押されることが無いため、処理が完了したらループから抜ける break; } } } // パーティーチャットでかつパーティーメンバーがいない場合(脱退、解散が起こった場合) if (nowChatNumber == TypeOfChat.PARTY && partySystem.GetPartyMember() == null) { // 全体チャットをオンにする allRoomChat.gameObject.SetActive(true); // 他のチャットを非アクティブにする partyChatText.gameObject.SetActive(false); playerToPlayerChatText.gameObject.SetActive(false); logWindowText.gameObject.SetActive(false); // ボタンに全体送信のメソッドを登録 sendButton.onClick.RemoveAllListeners(); sendButton.onClick.AddListener(SendChatInputForAll); // 切り替えボタンの色を変更する setButtonsColor((int)TypeOfChat.ALL); nowChatNumber = TypeOfChat.ALL; // 現在チャット番号を切り替える } }