位置: 编程技术 - 正文

unity3d中实现聊天功能(unity 3d教程)

编辑:rootadmin
【狗刨学习网】using UnityEngine;using System.Collections;public class Chat : MonoBehaviour { bool usingChat = false; bool showChat = false; string inputField = ""; Vector2 scrollposition; int width = ; int height = ; string playerName; float lastUnfocusTime = 0; Rect window; ArrayList playerList = new ArrayList(); class PlayerNode { public string playerName; public NetworkPlayer player;//NetworkPlayer是一个数据结构,保存着你可以从网络定位的另一位玩家的信息。比如,基于NetworkPlayer你可以向另外一个玩家发送消息。 } ArrayList chatEntries=new ArrayList(); class ChatEntry { public string name=""; public string text=""; } // Use this for initialization void Start () { window = new Rect(Screen.width / 2-width/2,Screen.height-height&#;5,width,height); } void OnConnectedToServer() { playerName = PlayerPrefs.GetString("playerName",""); if(playerName=="") { playerName = "RandomName"&#;Random.Range(1,); } ShowChatWindow(); networkView.RPC("TellServerOurName",RPCMode.Server,playerName);//在所有连接端调用一个RPC函数。 addGameChatMessage(playerName&#;" hase just joined the chat!"); } void OnServerInitialized() { playerName = PlayerPrefs.GetString("playerName",""); if(playerName=="") { playerName = "RandomName"&#;Random.Range(1,); } ShowChatWindow(); PlayerNode newEntry =new PlayerNode(); newEntry.playerName = playerName; newEntry.player = Network.player; playerList.Add(newEntry); addGameChatMessage(playerName&#;" hase just joined the chat!"); } PlayerNode GetPlayerNode(NetworkPlayer netPlay) { foreach(PlayerNode entry in playerList) { if(entry.player==netPlay) { return entry; } } Debug.LogError("GetPlayNode:Requested a playernode of non-existing player!"); return null; } void OnPlayerDisconnected(NetworkPlayer netPlayer)//当一个玩家从服务器上断开时在服务器端调用。 { addGameChatMessage("A Player has discinnected"); playerList.Remove(GetPlayerNode(netPlayer)); } void OnDisconnectedFromServer() { CloseChatWindow(); } [RPC] void TellServerOurName(string name,NetworkMessageInfo info)//NetworkMessageInfo 网络数据信息,刚从网络接收的数据的相关信息会被保存到这个结构中。它揭示了从哪里来(数据源),什么时间发送和什么网络视图发送;其中包括:数据源、发送时间、网络视图。 ... orkMessageInfo.html { PlayerNode newEntry = new PlayerNode(); newEntry.playerName = playerName; newEntry.player = Network.player; playerList.Add(newEntry); addGameChatMessage(playerName&#;" has just joined the chat!"); } void CloseChatWindow() { showChat = false; inputField = ""; chatEntries = new ArrayList(); } void ShowChatWindow() { showChat = true; inputField = ""; chatEntries = new ArrayList(); } void OnGUI () { if (!showChat) return; if(Event.current.type==EventType.keyDown && Event.current.character=='n' & inputField.Length<=0) { if(lastUnfocusTime &#; .f < Time.time) { usingChat = true; GUI.FocusWindow(5); GUI.FocusControl("Chat input field"); } } window = GUI.Window(5,window,GlobalChatWindow,""); } void GlobalChatWindow(int id) { GUILayout.BeginVertical(); GUILayout.Space(); GUILayout.EndVertical(); scrollposition = GUILayout.BeginScrollView(scrollposition); foreach(ChatEntry entry in chatEntries) { GUILayout.BeginHorizontal(); if (entry.name == " - ") { GUILayout.Label(entry.name &#; entry.text); } else { GUILayout.Label(entry.name&#;": "&#;entry.text); } GUILayout.EndHorizontal(); GUILayout.Space(2); } GUILayout.EndScrollView(); if(Event.current.type==EventType.keyDown && Event.current.character=='n' & inputField.Length>0) { HitEnter(inputField); } GUI.SetNextControlName("Chat input field"); inputField = GUILayout.TextField(inputField); if(Input.GetKeyDown("mouse 0")) { if(usingChat) { usingChat = false; GUI.UnfocusWindow(); lastUnfocusTime = Time.time; } } } void HitEnter(string msg) { msg = msg.Replace('n',' '); networkView.RPC("ApplyGlobalChatText",RPCMode.All,playerName,msg); } [RPC] void ApplyGlobalChatText(string name,string msg) { ChatEntry entry=new ChatEntry(); entry.name=name; entry.text=msg; chatEntries.Add(entry); if(chatEntries.Count>4) { chatEntries.RemoveAt(0); } scrollposition.y=; inputField=""; } void addGameChatMessage(string str) { ApplyGlobalChatText(" - ",str); if(Network.connections.Length>0) { networkView.RPC("ApplyGlobalChatText",RPCMode.Others," - ",str); } }}声明:此篇文档时来自于【狗刨学习网】社区,是网友自行发布的Unity3D学习文章,如果有什么内容侵犯了你的相关权益,请与官方沟通,我们会即时处理。更多精彩内容:www.gopedu.com

推荐整理分享unity3d中实现聊天功能(unity 3d教程),希望有所帮助,仅作参考,欢迎阅读内容。

unity3d中实现聊天功能(unity 3d教程)

文章相关热门搜索词:unity3ds,unity3d操作,unity3d的,unity3ds,unity 3d教程,unity3ds,unity3d documentation,unity3d documentation,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity3D中手势及重力加速度(神庙逃亡操作) 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学

Unity 5引擎公布:提供完整功能且不收分成 【狗刨学习网专稿,转载请注明出处】狗刨学习网报道/Unity今天推出了Unity5引擎发布计划,同时宣布将会调整该引擎的业务模式。和此前的产品一样,Un

Unity3d版本控制 【狗刨学习网】官网地址:

标签: unity 3d教程

本文链接地址:https://www.jiuchutong.com/biancheng/381568.html 转载请保留说明!

上一篇:unity3d游戏开发之多人网络翻译(Unity3D游戏开发标准教程)

下一篇:Unity3D中手势及重力加速度(神庙逃亡操作)(unity shooter)

  • 福建国税网上办税平台登录
  • 长期借款到期一年怎么算
  • 固定资产的税费可抵扣吗
  • 成品油红字发票开错了
  • 公益募捐什么意思
  • 销项发票导出格式不对怎么办
  • 新办企业一定要社保登记吗
  • 政府补贴中介合法吗
  • 会计录入凭证怎么录入
  • 应交城建税和教育费附加计算分录
  • 最新的税收政策
  • 存货清查会计分录例题盘亏
  • 可转换债券转股时股价高于转换价格
  • 贷款金融资产减值的会计分录怎么写?
  • 研发场地租赁计什么科目
  • 营改增后餐饮业税率
  • 有代扣个税的是什么人
  • 国税退税需要多长时间
  • 一般纳税人开劳务费税率是多少2023
  • 哪些情形可以补胎
  • 先缴纳社保还是先扣税
  • 关联企业间融资方式
  • 委托贷款利息收入怎么开发票
  • 存货跌价准备怎么计提
  • 会计师事务所执业许可和监督管理办法
  • 房地产企业的样板房,装修款如何缴纳增值税
  • 企业亏损可以不缴纳公积金吗
  • 法人车无偿给公司使用合法吗
  • 预付账款坏账处理流程
  • 不发工资先去劳动局投诉还是仲裁
  • mac如何修改照片的尺寸大小
  • php7多线程
  • 筹建期间费用计什么科目
  • linux系统中安装软件的批处理文件
  • 付给他人押金的会计分录
  • bearshare.exe进程安全吗 bearshare是什么进程
  • 购买货物现金付讫的会计分录
  • 申请专用发票怎么申请
  • DeepLabV3+:Mobilenetv2的改进以及浅层特征和深层特征的融合
  • php查找字符串中的某个字符
  • 理财收益如何计税
  • js如何实现异步编程
  • 京东到家的物流模式
  • jquery 兄弟选择器
  • centos+php+coreseek+sphinx+mysql之一coreseek安装篇
  • 贸易企业开发下游业务
  • c语言中局部变量和全局变量同名
  • 一般纳税人作废小规模时开的发票怎么报税
  • sql server干嘛的
  • mysql error!
  • 材料暂估入库的账务处理
  • 员工欠薪怎么办
  • 事业单位利息收入的正确分录
  • 应交税费月底账务处理
  • 出售未到折旧年金怎么算
  • 实收资本主要包括哪些
  • 会计制度和会计准则科目转换
  • 冲以前年度成本怎么做凭证
  • 英语培训机构成人浦口区
  • 股东之间转让股权有优先购买权吗
  • 变更法人需要什么条件
  • sql空值用什么表示
  • Windows 2008 R2 AD组策略-统一域用户桌面背景详细图文教程
  • 修改注册表解决画面撕裂
  • linux中使用最多的命令
  • 为什么国外程序员比国内厉害
  • windows7打开网络连接
  • js实现简单的画图功能
  • 简述图像批处理的操作过程
  • jquery如何实现双向绑定
  • asp.net 4.8
  • jquery示例
  • python爬虫怎么做
  • javascript如何绘制曲线
  • jQuery validate+artdialog+jquery form实现弹出表单思路详解
  • Dojo Javascript 编程规范 规范自己的JavaScript书写
  • 企业支付的年度报告审计费
  • 如何落实请示汇报
  • 小店区税务大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设