Unity/photon/pun1/chatのソースを表示
←
Unity/photon/pun1/chat
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
==サンプル== PhotonChatManager.cs <pre> using System.Collections; using System.Collections.Generic; using UnityEngine; using Photon.Chat; using ExitGames.Client.Photon; public class PhotonChatManager : MonoBehaviour, IChatClientListener { static PhotonChatManager mInstance; public string channelName; public bool connectFlag = false; private ChatClient chatClient; private ConnectionProtocol connectionProtocol = ConnectionProtocol.Udp; private Photon.Chat.AuthenticationValues authValues = new Photon.Chat.AuthenticationValues(); private ChatConnectScene scene; private PhotonChatManager() { } public static PhotonChatManager Instance { get { if (mInstance == null) { GameObject go = new GameObject("PhotonChatManager"); mInstance = go.AddComponent<PhotonChatManager>(); } return mInstance; } } public void SetScene(ChatConnectScene obj) { scene = obj; } public void Start() { if (string.IsNullOrEmpty(PhotonNetwork.PhotonServerSettings.ChatAppID)) { Debug.LogError("You need to set the chat app ID in the PhotonServerSettings file in order to continue."); return; } } public void Connect() { chatClient = new ChatClient(this, connectionProtocol); #if !UNITY_WEBGL chatClient.UseBackgroundWorkerForSending = true; #endif // authValues.UserId = "guest1"; // PhotonNetwork.playerName; // authValues.UserId = UserManager.Instance.GetName(); authValues.AuthType = Photon.Chat.CustomAuthenticationType.None; Debug.Log("Connect " + PhotonNetwork.PhotonServerSettings.ChatAppID); chatClient.Connect(PhotonNetwork.PhotonServerSettings.ChatAppID, "4.2", authValues); // PhotonNetwork.PhotonServerSettings.ChatAppID channelName = "channelWorld"; // PhotonNetwork.room.Name } void Update() { if (chatClient != null) chatClient.Service(); } // みんなに送信 public void PublishMessage(string channelName, string message) { chatClient.PublishMessage(channelName, message); } public enum Status { Offline, Online } // ステータス設定(ChatUserStatus.Online,ChatUserStatus.Offline) public void SetOnlineStatus(Status statusMsg, string msg) { int status = 0; if (statusMsg.Equals(Status.Offline)) { status = ChatUserStatus.Offline; } else if (statusMsg.Equals(Status.Online)) { status = ChatUserStatus.Online; } chatClient.SetOnlineStatus(status, msg); } // IChatClientListener start public void DebugReturn(DebugLevel level, string message) { Debug.Log("Debug level " + level); Debug.Log("Message " + message); } public void OnChatStateChange(ChatState state) { Debug.Log("Chat state: " + state); } public void OnConnected() { Debug.Log("OnConnected"); // chatClient.Subscribe(new string[] { channelName }); chatClient.Subscribe(channelName, 0, 10); // 履歴10件保存 } public void OnDisconnected() { Debug.Log("OnDisconnected"); if (chatClient != null) chatClient.Disconnect(); if (scene != null) { scene.OnDisconnected(); } } public void OnGetMessages(string channelName, string[] senders, object[] messages) { int msgCount = messages.Length; Debug.Log("OnGetMessages msgCount=" + msgCount); for (int i = 0; i < msgCount; i++) { string sender = senders[i]; string msg = (string)messages[i]; Debug.Log(sender + ": " + msg); if (scene != null) { scene.OnChatRecord(sender, msg, i + 1, msgCount); } } } public void OnPrivateMessage(string sender, object message, string channelName) { Debug.Log("OnPrivateMessage"); } public void OnStatusUpdate(string user, int status, bool gotMessage, object message) { Debug.Log("user: " + user); Debug.Log("status: " + status); Debug.Log("gotMessage: " + gotMessage); Debug.Log("message: " + message); } public void OnSubscribed(string[] channels, bool[] results) { Debug.Log("Suscribed to channel"); if (scene != null) { scene.OnRoomEnter(); } } public void OnUnsubscribed(string[] channels) { Debug.Log("Unsubscribed"); foreach (string channel in channels) { Debug.Log("channel=" + channel); } } public void OnUserSubscribed(string channel, string user) { Debug.LogFormat("OnUserSubscribed: channel=\"{0}\" userId=\"{1}\"", channel, user); } public void OnUserUnsubscribed(string channel, string user) { Debug.LogFormat("OnUserUnsubscribed: channel=\"{0}\" userId=\"{1}\"", channel, user); } // IChatClientListener end } </pre> ChatConnectScene.cs <pre> using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class ChatConnectScene : MonoBehaviour { PhotonChatManager manager; int chatMessageCnt = 0; void Start() { manager = PhotonChatManager.Instance; manager.SetScene(this); manager.Connect(); InitGui(); } // Update is called once per frame void Update() { } void InitGui() { GameObject.Find("SendButton").GetComponent<Button>().onClick.AddListener(OnClickSend); OnChatRecord("Sys", "接続中...", 1, 1); } // メッセージイベント public void OnChatRecord(string sender, string message, int num, int sumcnt) { Debug.Log("ChatRecordGui num=" + num + " sumcnt=" + sumcnt); string panelName = "Panel"; for (int i = 0; i <= 9; i++) { Destroy(GameObject.Find("/Canvas/" + panelName + "/Scroll View/Viewport/Content/ChatRecordDummy" + i)); // dummyがあれば、削除 } GameObject prefab = (GameObject)Resources.Load("ChatRecord"); GameObject content = GameObject.Find("/Canvas/" + panelName + "/Scroll View/Viewport/Content"); Vector3 position = new Vector3(0, 0, 0); if (sender != "" && message != "") { GameObject obj = Instantiate(prefab, position, Quaternion.identity, content.transform); obj.name = "ChatRecord" + chatMessageCnt; GameObject msgObj = GameObject.Find("/Canvas/" + panelName + "/Scroll View/Viewport/Content/ChatRecord" + chatMessageCnt + "/MsgText"); GameObject nameObj = GameObject.Find("/Canvas/" + panelName + "/Scroll View/Viewport/Content/ChatRecord" + chatMessageCnt + "/NameText"); msgObj.GetComponent<Text>().text = message; nameObj.GetComponent<Text>().text = sender; chatMessageCnt++; } if (num == sumcnt) { // 下に少し、スペース追加 GameObject prefabDummy = (GameObject)Resources.Load("ScoreDummyPanel"); GameObject objdummy = Instantiate(prefabDummy, position, Quaternion.identity, content.transform); objdummy.name = "ChatRecordDummy" + Random.Range(0, 9); } Invoke("ScrollDown", 0.1f); } // 部屋に入るイベント public void OnRoomEnter() { Debug.Log("RoomEnterGui"); OnChatRecord("Sys", "接続しました", 1, 1); manager.connectFlag = true; manager.SetOnlineStatus(PhotonChatManager.Status.Online, ""); Debug.Log("manager.connectFlag=" + manager.connectFlag); } public void OnDisconnected() { Debug.Log("OnDisconnected"); OnChatRecord("Sys", "接続が切れました。", 1, 1); Invoke("Logout", 3f); } void Logout() { SceneManager.LoadScene("RoomSelectScene"); } // スクロール下へ public void ScrollDown() { string panelName = "Panel"; GameObject content = GameObject.Find("/Canvas/" + panelName + "/Scroll View/Viewport/Content"); GameObject scrollObj = GameObject.Find("/Canvas/" + panelName + "/Scroll View/"); ScrollRect scroll = scrollObj.GetComponent<ScrollRect>(); scroll.verticalNormalizedPosition = 0; content.GetComponent<ContentSizeFitter>().SetLayoutVertical(); } void OnClickSend() { if (!manager.connectFlag) return; GameObject textObj = GameObject.Find("InputField"); string msg = textObj.GetComponent<InputField>().text; manager.PublishMessage(manager.channelName, msg); textObj.GetComponent<InputField>().text = ""; } void OnClickReturn() { manager.SetOnlineStatus(PhotonChatManager.Status.Offline, "Offline"); manager.OnDisconnected(); SceneManager.LoadScene("RoomSelectScene"); } } </pre> ==参考== http://answers.unity3d.com/questions/1366044/unity-crashes-when-compiling-this-script-where-is.html
Unity/photon/pun1/chat
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
プログラムメモ
php
flutter
java
android
kotlin
ios
unity
unrealengine
javascript
mysql
sqlite
postgresql
oracle
mroonga
mongodb
flash
electron
cocos2dx
titanium
cpp
ruby
perl
python
accessメモ
rss
html
monaca
cordova
golang
blender
セキュリティ
テストツール
サーバメモ
linux
dotnet
apacheメモ
htaccessメモ
subversion
git
仮想サーバ
ansible
sendgrid
xampp
cacti
mecab
faces
flashpolicyd
fcs
jenkins
運用
デザインメモ
css
ユーザビリティ
ux
サービスメモ
twitter
facebook
instagram
mixi
セカンドライフ
通信ログ横取り
google
ustream
aws
gcp
plesk
azure
vps
AI
その他サービス
便利系メモ
SEO
モバイル
抽象変数名
DDD
クライアント
firefox
chrome
pgp
windows
mac
jmetar
Thunderbird
excel
libreoffice
vpnclient
doxygen
VisualStudioCode
fastlane
metaquest
cmsメモ
mediawiki
pukiwiki
wordpress
その他
資格
IT用語
pvを稼ぐ方法
将棋プログラム
その他
ログイン
ページ内
メインページ
最近の更新
人気のページ
問い合わせ
ツール
リンク元
関連ページの更新状況
ページ情報