Unity中C#网络通信和下载保存
2011-10-24 22:18
447 查看
开发环境
Window7
Unity3D 3.4.1
VS2010
MB525defy Android 2.2.1
羽化的第十五篇博客,这一星期蹭了杰哥和伍哥两顿饭有点不好意思,日后一定请回来-0- 杨和家人去了内蒙做生意,从此告别代码,人生轨迹真是难以估计啊,回想年初来公司的时候,和他一起做游戏Demo基本上就是羽化第一次接触游戏制作,从中学习到不少东西,大家年龄相仿,聊了很多也能算上朋友吧,希望他在新的环境生意兴隆,万事平安。最近打翻了《寄生前夜:第3次生日》,PSP难得的大作,不可否认Square做游戏画面和剧情都是一流,Aya走了,与FF8 OP同名的一曲“EyesOn Me”带走了我们的回忆,带来了对游戏业新的希望。
这次带来的是Unity中C#网络通信和下载保存,都是很有实用价值的代码,希望大家喜欢=。= 再免费送上最近做的测试效果图,公司美术一直很给力,程序与美术之间都在共同进步,这次贴图测试效果出来了-0- 以后有机会就给大家分享下材质和Shader方面的学习经验。
本次学习:
1. 简单的C#通信测试
2. 下载和本地保存实例
1. 简单的C#通信测试
首先是与服务器端通信测试,这里羽化和明哥商量的是用C#,因为我们都是Java出生,服务器部分就交给了明哥,羽化这里只是截取了主要实现的小部分代码,所以只能拿来参考,并不能用于实战,明哥最近又在忙什么多线程通信,线程锁之内的高深问题-0- 这是羽化写的客户端实现,只能一次通信,服务器可以多次接受,下面是服务器的截图,在VS2010中运行截图:
代码放在了下面的工程文件中,这里主要学习Unity中的客户端。总共分成3步:连接-发送-接受,简单的3步,这里的“192.168.0.154”是羽化本机的IP地址,大家要测试时不要忘了更改,再者若没打开服务器就运行本工程,就会停顿一定时间,在报错开始运行,原因是羽化没开多线程- -
CtoS.cs
2. 下载和本地保存实例
下载是羽化一直关心的问题,由于开发的是网页和手机平台,有些资源要得到用户许可下载到本地,这样可以加速游戏运行,所以这里羽化就以一张图片为例,这里做了平台判断,在Android上依然可以保存在SD上,PC端就下载到了工程的download里面。代码如下:
Download.cs
下载效果图:
由于上面的服务器测试用C#,所以这个羽化也改写成了C#,方便管理,这里需要注意的是,保存的图片是以我们规定的形式输出出去的,羽化把这图片做成了这个模型的贴图,渐变显示出来,这个模型有动作的,羽化也让它播放了出来,图片为网上任意找的一张图片,当然也是羽化喜欢的东西-0- 那可怜的工资带不动的爱啊- -
老样子- -工程地址:
http://dl.dbank.com/c0txqah13k
最后送上一张我们做的测试截图,Unity自带的Shader和高光贴图,虽然没有法线,效果还不错,消耗不是很大,还有很大上升空间~ ~ 手机上效果略次,微弱显示高光效果,有待改善- -
下期预告:
Unity多屏研究
Window7
Unity3D 3.4.1
VS2010
MB525defy Android 2.2.1
羽化的第十五篇博客,这一星期蹭了杰哥和伍哥两顿饭有点不好意思,日后一定请回来-0- 杨和家人去了内蒙做生意,从此告别代码,人生轨迹真是难以估计啊,回想年初来公司的时候,和他一起做游戏Demo基本上就是羽化第一次接触游戏制作,从中学习到不少东西,大家年龄相仿,聊了很多也能算上朋友吧,希望他在新的环境生意兴隆,万事平安。最近打翻了《寄生前夜:第3次生日》,PSP难得的大作,不可否认Square做游戏画面和剧情都是一流,Aya走了,与FF8 OP同名的一曲“EyesOn Me”带走了我们的回忆,带来了对游戏业新的希望。
这次带来的是Unity中C#网络通信和下载保存,都是很有实用价值的代码,希望大家喜欢=。= 再免费送上最近做的测试效果图,公司美术一直很给力,程序与美术之间都在共同进步,这次贴图测试效果出来了-0- 以后有机会就给大家分享下材质和Shader方面的学习经验。
本次学习:
1. 简单的C#通信测试
2. 下载和本地保存实例
1. 简单的C#通信测试
首先是与服务器端通信测试,这里羽化和明哥商量的是用C#,因为我们都是Java出生,服务器部分就交给了明哥,羽化这里只是截取了主要实现的小部分代码,所以只能拿来参考,并不能用于实战,明哥最近又在忙什么多线程通信,线程锁之内的高深问题-0- 这是羽化写的客户端实现,只能一次通信,服务器可以多次接受,下面是服务器的截图,在VS2010中运行截图:
代码放在了下面的工程文件中,这里主要学习Unity中的客户端。总共分成3步:连接-发送-接受,简单的3步,这里的“192.168.0.154”是羽化本机的IP地址,大家要测试时不要忘了更改,再者若没打开服务器就运行本工程,就会停顿一定时间,在报错开始运行,原因是羽化没开多线程- -
CtoS.cs
using UnityEngine; using System.Collections; using System.ComponentModel ; using System; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; public class CtoS : MonoBehaviour { public string SendM= "-(00)-"; public string server = "192.168.0.154"; private Socket socket; public GUIText Test; void Start () { try { /*Connect*/ socket = new Socket ( AddressFamily.InterNetwork , SocketType.Stream , ProtocolType.Tcp); IPEndPoint tempRemoteIP = new IPEndPoint (IPAddress.Parse(server), 11000); EndPoint epTemp = (EndPoint)tempRemoteIP; socket.Connect(epTemp); print("Success Connect"); /*Send*/ Byte[] bytesSent = Encoding.ASCII.GetBytes(SendM); socket.Send(bytesSent,bytesSent.Length,0); /*Received*/ Byte[] bytesReceived = new Byte[256]; int bytes = 0; string page = "Server: Success Connect " + server + ":\r\n"; do { bytes = socket.Receive(bytesReceived, bytesReceived.Length, 0); page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes); } while (bytes > 0); Test.text = page; } catch (Exception e) { print(e); } } }服务器打开的话客户端收到返回信息(和发送一样)运行效果如下图:
2. 下载和本地保存实例
下载是羽化一直关心的问题,由于开发的是网页和手机平台,有些资源要得到用户许可下载到本地,这样可以加速游戏运行,所以这里羽化就以一张图片为例,这里做了平台判断,在Android上依然可以保存在SD上,PC端就下载到了工程的download里面。代码如下:
Download.cs
using UnityEngine; using System.Collections; using System.IO; public class Download : MonoBehaviour { public string url = "http://ww3.sinaimg.cn/large/80dfe250jw1dle1r2v4t9j.jpg"; public GUIText Test; WWW www; Color Alpha; bool Appear = false; int a = 0; IEnumerator Start() { www = new WWW(url); //定义www为WWW类型并且等于所下载下来的WWW中内容。 yield return www; //返回所下载的www的值 renderer.material.shader = Shader.Find("Transparent/Diffuse"); renderer.material.mainTexture = www.texture; Texture2D newTexture = www.texture; byte[] pngData = newTexture.EncodeToPNG(); try { if (Application.platform == RuntimePlatform.Android) { File.WriteAllBytes(Application.persistentDataPath + "/ICO.png", pngData); } else { File.WriteAllBytes(Application.dataPath + "/download/ICO.png", pngData); } } catch(IOException e) { print(e); } Alpha = renderer.material.color; Alpha.a = 0; Appear = true; renderer.enabled = true; renderer.material.color = Alpha; //将下载下来的WWW中的图片赋予到默认物体的材质上进行渲染出来 } void Update() { Test.text = "DownLoad: " + www.progress; if(www.progress == 1 && Appear) { a++; Alpha = renderer.material.color; Alpha.a += 0.01F; renderer.material.color = Alpha; } if(Input.GetKey(KeyCode.Escape)) { Application.Quit(); } } }
下载效果图:
由于上面的服务器测试用C#,所以这个羽化也改写成了C#,方便管理,这里需要注意的是,保存的图片是以我们规定的形式输出出去的,羽化把这图片做成了这个模型的贴图,渐变显示出来,这个模型有动作的,羽化也让它播放了出来,图片为网上任意找的一张图片,当然也是羽化喜欢的东西-0- 那可怜的工资带不动的爱啊- -
老样子- -工程地址:
http://dl.dbank.com/c0txqah13k
最后送上一张我们做的测试截图,Unity自带的Shader和高光贴图,虽然没有法线,效果还不错,消耗不是很大,还有很大上升空间~ ~ 手机上效果略次,微弱显示高光效果,有待改善- -
下期预告:
Unity多屏研究
相关文章推荐
- unity中简单的C#通信测试,下载和本地保存实例
- 【开源下载】基于TCP网络通信的即时聊天系统(IM系统)(c#源码)
- Unity(C#.net)网络通信问题解决(服务器开启失败,Socket下的“由于目标机器积极拒绝,无法连接”异常)
- 【开源下载】客户端根据服务器端的指令弹出提示窗口(c#网络通信源码)
- 【开源下载】基于TCP网络通信的自动升级程序c#源码
- 【开源下载】基于TCP网络通信的即时聊天系统(IM系统)(c#源码)
- C#网络上下载各种文件保存到本地
- 【开源下载】客户端根据服务器端的指令弹出提示窗口(c#网络通信源码)
- 【开源下载】基于TCP网络通信的自动升级程序c#源码
- C#、Unity网络通信中基于字节码的自定义协议解码,C#版ByteBuffer
- 【转】【开源下载】基于TCP网络通信的即时聊天系统(IM系统)(c#源码)
- DirectX编程:C#中利用Socket实现网络语音通信[初级版本]
- c# 把网络文件下载到本地
- c#网络通信框架networkcomms内核解析之九 自定义处理方法的运行机制
- Unity网络通信(二)Unity Network 聊天
- Unity网络通信与端口通信
- C#网络编程TCP通信实例程序简单设计
- 下载网络上的图片,并且保存在指定的文件夹中
- 解决C#网络通信编程的阻塞问题
- 从网络下载图片,保存,并用 UIImageView 从保存中显示