unity学习(41)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——发包!

本文主要是介绍unity学习(41)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——发包!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.客户端的程序结构被我精简过,现在去MessageManager.cs中增加一个UserHandler函数,根据收到的包做对应的GameInfo赋值。

2.在Model文件夹下新增一个协议文件UserProtocol,内容很简单。

using System;public class UserProtocol
{public const int LIST_CREQ = 0;public const int LIST_SRES = 1;public const int CREATE_CREQ = 2;public const int CREATE_SRES = 3;public const int SELECT_CREQ = 4;public const int SELECT_SRES = 5;public const int REMOVE_CREQ = 6;public const int REMOVE_SRES = 7;
}

3.在Model文件夹的SocketModel.cs中增加CreateTDO部分,用来组装数据包,内容如下:

public class CreateDTO{public int job{get;set;}public string name{get;set;}}

4.增加panel中“创建角色”按钮响应函数CreateClick():(用来向服务器发包)(之前叫finish)

代码如下: (vs2022的代码提示功能简直逆天!

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class SelectMenu : MonoBehaviour
{// Start is called before the first frame update//public GameObject c = GameObject.FindWithTag("selectMenuCanvas");public GameObject quan;//start中就保存好了public int flag = 0;void Start(){//gameObject.SetActive(false);//GameObject m = GameObject.FindWithTag("selectMenuCanvas");//现在我挂在camera上就可以这么用了this.quan = GameObject.FindWithTag("selectMenuCanvas");//同一命名空间即可,canvas在最外边是有道理的this.quan.SetActive(false);//gameObject.GetComponent<Renderer>.enabled = false;}// Update is called once per framevoid Update()//角色的选择和创建我做在一起就可以了{//Debug.Log(GameInfo.GAME_STATE);//初始状态开始为0//Debug.Log(GameState.PLAYER_CREATE); //这个是4if (GameInfo.GAME_STATE == GameState.PLAYER_CREATE && this.flag == 0){//Debug.Log(GameInfo.GAME_STATE);//初始状态开始为0//Debug.Log(GameState.PLAYER_CREATE);this.flag = 1;Debug.Log("这里计划是只执行一次");this.quan.SetActive(true);}}public void GoToCreate()//unity那边想要加载必须public{Debug.Log("我确实进入onclick函数了");//这种藏起来的找不着!第二次犯这个错误了//下面这两句再次说明了之前false的找不到//GameObject panel = GameObject.FindWithTag("createPanel");//同一命名空间即可,canvas在最外边是有道理的//panel.SetActive(true);Debug.Log(CreatePlayerPanel.panel);CreatePlayerPanel.panel.SetActive(true);//用的static实例类--这个卡住了Debug.Log("给我弹出创造页面");}
}

服务器也收到包了(有问题下次再改)

这篇关于unity学习(41)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——发包!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/744099

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4