关于修改游戏配置这点,如果pc还好

但是在移动端,比较麻烦,比如游戏换ip地址了,可能需要重新打包了

那能不能动态修改,这里有个思路

以udp举例

在客户端里面写一个udp服务,在游戏第一界面打开,比如在登录界面

那么切换这个界面,就可以把这个服务给关掉了。消耗也不大

写个udp的客户端,给游戏客户端的udp服务发消息

客户端根据收到的消息来修改自己的配置,保存于本地

下次启动游戏,那么配置就生效了

其实就是相当于把客户端写了一个服务器功能

让2者处于同一网络下,就可以连接了,比如wifi下

server

using UnityEngine;
using System.Collections;
//引入库
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading; public class UdpServer:MonoBehaviour
{
//以下默认都是私有的成员
Socket socket; //目标socket
EndPoint clientEnd; //客户端
IPEndPoint ipEnd; //侦听端口
string recvStr; //接收的字符串
string sendStr; //发送的字符串
byte[] recvData=new byte[]; //接收的数据,必须为字节
byte[] sendData=new byte[]; //发送的数据,必须为字节
int recvLen; //接收的数据长度
Thread connectThread; //连接线程 //初始化
void InitSocket()
{
//定义侦听端口,侦听任何IP
ipEnd=new IPEndPoint(IPAddress.Any,);
//定义套接字类型,在主线程中定义
socket=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
//服务端需要绑定ip
socket.Bind(ipEnd);
//定义客户端
IPEndPoint sender=new IPEndPoint(IPAddress.Any,);
clientEnd=(EndPoint)sender;
print("waiting for UDP dgram"); //开启一个线程连接,必须的,否则主线程卡死
connectThread=new Thread(new ThreadStart(SocketReceive));
connectThread.Start();
} void SocketSend(string sendStr)
{
//清空发送缓存
sendData=new byte[];
//数据类型转换
sendData=Encoding.ASCII.GetBytes(sendStr);
//发送给指定客户端
socket.SendTo(sendData,sendData.Length,SocketFlags.None,clientEnd);
} //服务器接收
void SocketReceive()
{
//进入接收循环
while(true)
{
//对data清零
recvData=new byte[];
//获取客户端,获取客户端数据,用引用给客户端赋值
recvLen=socket.ReceiveFrom(recvData,ref clientEnd);
print("message from: "+clientEnd.ToString()); //打印客户端信息
//输出接收到的数据
recvStr=Encoding.ASCII.GetString(recvData,,recvLen);
print(recvStr);
//将接收到的数据经过处理再发送出去
sendStr="From Server: "+recvStr;
SocketSend(sendStr);
}
} //连接关闭
void SocketQuit()
{
//关闭线程
if(connectThread!=null)
{
connectThread.Interrupt();
connectThread.Abort();
}
//最后关闭socket
if(socket!=null)
socket.Close();
print("disconnect");
} // Use this for initialization
void Start()
{
InitSocket(); //在这里初始化server
} // Update is called once per frame
void Update()
{ } void OnApplicationQuit()
{
SocketQuit();
}
}

client

using UnityEngine;
using System.Collections;
//引入库
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading; public class UdpClient:MonoBehaviour
{
string editString="hello wolrd"; //编辑框文字 //以下默认都是私有的成员
Socket socket; //目标socket
EndPoint serverEnd; //服务端
IPEndPoint ipEnd; //服务端端口
string recvStr; //接收的字符串
string sendStr; //发送的字符串
byte[] recvData=new byte[]; //接收的数据,必须为字节
byte[] sendData=new byte[]; //发送的数据,必须为字节
int recvLen; //接收的数据长度
Thread connectThread; //连接线程 //初始化
void InitSocket()
{
//定义连接的服务器ip和端口,可以是本机ip,局域网,互联网
ipEnd=new IPEndPoint(IPAddress.Parse("127.0.0.1"),);
//定义套接字类型,在主线程中定义
socket=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
//定义服务端
IPEndPoint sender=new IPEndPoint(IPAddress.Any,);
serverEnd=(EndPoint)sender;
print("waiting for sending UDP dgram"); //建立初始连接,这句非常重要,第一次连接初始化了serverEnd后面才能收到消息
SocketSend("hello"); //开启一个线程连接,必须的,否则主线程卡死
connectThread=new Thread(new ThreadStart(SocketReceive));
connectThread.Start();
} void SocketSend(string sendStr)
{
//清空发送缓存
sendData=new byte[];
//数据类型转换
sendData=Encoding.ASCII.GetBytes(sendStr);
//发送给指定服务端
socket.SendTo(sendData,sendData.Length,SocketFlags.None,ipEnd);
} //服务器接收
void SocketReceive()
{
//进入接收循环
while(true)
{
//对data清零
recvData=new byte[];
//获取客户端,获取服务端端数据,用引用给服务端赋值,实际上服务端已经定义好并不需要赋值
recvLen=socket.ReceiveFrom(recvData,ref serverEnd);
print("message from: "+serverEnd.ToString()); //打印服务端信息
//输出接收到的数据
recvStr=Encoding.ASCII.GetString(recvData,,recvLen);
print(recvStr);
}
} //连接关闭
void SocketQuit()
{
//关闭线程
if(connectThread!=null)
{
connectThread.Interrupt();
connectThread.Abort();
}
//最后关闭socket
if(socket!=null)
socket.Close();
} // Use this for initialization
void Start()
{
InitSocket(); //在这里初始化
} void OnGUI()
{
editString=GUI.TextField(new Rect(,,,),editString);
if(GUI.Button(new Rect(,,,),"send"))
SocketSend(editString);
} // Update is called once per frame
void Update()
{ } void OnApplicationQuit()
{
SocketQuit();
}
}

unity远程修改游戏配置的更多相关文章

  1. 修改本地配置远程连接oracle数据库

    当我们需要查看数据库信息时,我们更愿意通过客户端来查看,这样不仅操作方便,而且查看更精准.那么需要远程连接数据库需要在本地修改那些配置呢?以下是我个人的经验,希望大家都指正. 1.在oracle安装目 ...

  2. Spring Cloud 学习 之 Spring Cloud Bus实现修改远程仓库后配置自动刷新

    ​ 版本号: ​ Spring Boot:2.1.3.RELEASE ​ Spring Cloud:G版 ​ 开发工具:IDEA 搭建配置中心,这里我们搭建一个简单版的就行 POM: <?xml ...

  3. Unity塔防游戏开发

    Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器.Visual Studio编译器开发建议:了解Uni ...

  4. [转载]eclipse的远程调试功能配置

    原文地址:eclipse的远程调试功能配置作者:我的 用途:web应用部署并运行于外部(区别于eclipse环境中启动的)应用服务器中,当出现问题时,可以使用eclipse工程的源代码进行跟踪调试. ...

  5. 总结Unity IOC容器通过配置实现类型映射的几种基本使用方法

    网上关于Unity IOC容器使用的方法已很多,但未能做一个总结,故我这里总结一下,方便大家选择. 首先讲一下通过代码来进行类型映射,很简单,代码如下: unityContainer = new Un ...

  6. centos系统修改网络配置注意事项

    这也是无意之中发现的,我在做一个远程修改工控机网络配置的程序, 网络配置参数/etc/sysconfig/network-scripts/ifcfg-enp1s0下面,当然名字可能不一样ifcfg-e ...

  7. Unity IOC容器通过配置实现类型映射的几种基本使用方法

    网上关于Unity IOC容器使用的方法已很多,但未能做一个总结,故我这里总结一下,方便大家选择. 首先讲一下通过代码来进行类型映射,很简单,代码如下 unityContainer = new Uni ...

  8. Siki_Unity_1-8_使用Unity开发2D游戏_PongGame

    Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...

  9. unity开发android游戏(一)搭建Unity安卓开发环境

    unity开发android游戏(一)搭建Unity安卓开发环境 分类: Unity2014-03-23 16:14 5626人阅读 评论(2) 收藏 举报 unity开发androidunity安卓 ...

随机推荐

  1. linux vi vim文本编辑器

    vim是vi的加强版,建议使用vim. vim拥有三种模式: 命令模式(常规模式) vim启动后,默认进入命令模式,任何模式都可以通过esc键来回到命令模式.命令模式可以通过键入不同的命令来完成选择, ...

  2. Java之enum

    枚举是 JDK 1.5  中引入的新特性,存放在 java.lang 包中.在没有枚举之前都是直接定义一个final string这种,有了枚举之后可以直接定义啦,不过在java中需要自定义转换,自己 ...

  3. [LeetCode 题解]: Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  4. ZKEACMS添加搜索功能,搜索插件说明

    ZKEACMS默认是不支持搜索功能的.但是搜索功能是比较常用的一个功能,使用这个搜索插件,可以让CMS支持搜索: 如下图所示: 数据库 Microstft Sql Server 2008R2 以上 页 ...

  5. centos6.5安装配置网络

    很多时候,Centos系统都是使用命令来管理的,如果当时安装系统时没有设置IP地址的话,那就只能在命令行设置了.当然对于高手来说,easy!但对于小白来说,头都大了,呵呵!下面简单说下我的操作吧 首先 ...

  6. 并行架构技术 EasyMR

    EasyMR简介 一个并行计算软件框架 基于此框架的软件可以运行在多台计算机组成的计算集群上,并且每个计算机的计算任务也是多线程方式并行进行的,对于处理复杂的业务和巨量数据时非常用于. 有着MapRe ...

  7. [Perl]通过GD模块获取字符/汉字的点阵

    原来Perl获取汉字的点阵如此简单 示例脚本应保存为utf8格式 Code: [全选] [展开/收缩] [Download] (Untitled.pl) use GD; use utf8; my $g ...

  8. c++分块算法(暴力数据结构)

    快要noip了,该写些题解攒攒rp了(逃) 看到题解里那么多线段树啊,树状数组啊,本蒟蒻表示:这都是什么鬼东西? 在所有高级数据结构中,树状数组是码量最小的,跑的也基本是最快的,但理解很难,并且支持的 ...

  9. 2018-12-20 第一章初识JAVA-上机

    JAVA初体验之课后练习 一.请写出Java 程序执行过程与编译原理 答:①执行过程:创建.java文件——编译器(JDK环境里的javac.exe文件编译)——输出.class供计算机接受(只有cl ...

  10. 比较旧的写法:验证车牌、手机号、电话、qq等

    1.验证车牌代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...