2019-08-20 11:20:30 weixin_38744526 阅读数 10743

最近在写论文做毕业设计,真是一个头两个大。写过论文的伙伴一定都懂,头发一撮一撮地掉,好心痛!

我的毕设需要用到树莓派编程然后转接到Unity3D利用多媒体投影显示内容,这中间需要用到网络通信多线程。

查了一些资料,决定选择Python Socket来实现功能。Socket是任何一种计算机网络通讯中最基础的内容,网上也能查到好多Python Socket 套接字编程的指南和教程。

不过,教程太多弄得我眼花缭乱,也没明白Socket通信多线程是咋回事,偶然发现了一个讲Python 多线程的小视频,我觉得讲的超详细,很容易懂,特来分享给大家~

如果你也想知道Python多线程是怎么实现的,跟我一起看看下方视频,听知名技术专家李刚老师对Socket多线程和Python的TCP支持与创建TCP服务端的详细解析,

并发编程+网络编程

李刚老师出版的《疯狂java》体系图书曾得到市场的广泛认可,经过多次再版,并被多家高校选作教材。上方视频来自于李刚老师的在线视频课程《21天通关Python》第八章 并发编程+网络编程

鉴于大家都有学习Python的困惑,今天就给大家推荐一本巨有影响力的Python实战书,上线时间仅2个月,就超越了众多实力派,成京东和当当网上的长期畅销图书,并且收获了3.4W的五星好评。

这本书可谓是笔者独家私藏图书之一了,对我学习Python有着莫大的帮助,在京东上也常常"断货",这次拿出来给大家分享一下,希望能帮到大家。

《21天通关Python》视频课程以畅销图书为教材,由图书作者李刚亲自操刀讲解;上手门槛低,可作为0基础掌握Python教材;书籍+线上复合型学习场景特别适合Python小白学习!

点此查看课程:https://edu.csdn.net/bundled/detail/49?utm_source=jiansuopy58_1
(含图书邮寄+视频教程+社群答疑+导师带队)

笔者跟大家分享一个福利!下单时输入优惠码csdn66,立减20元,券后仅需99元
扫码入Python技术交流群,可免费听技术讲座+领学习资料+视频课免费看
在这里插入图片描述

2014-11-20 20:36:59 book_longssl 阅读数 739

本地客户端开发入门

本地客户端 (NaCl) 是 Google 提供的新技术,其允许您在 Web 页面嵌入本地可执行代码,以便您在无需安装插件的情况下部署性能非常强的 web 应用程序。目前,NaCl 仅支持在 Windows、Mac OS X 和 Linux(含可用的 Chrome 操作系统支持)上使用 Google Chrome,但这是一项开源技术,我们以后可将此技术移植到其他浏览器平台。

Unity 3.5 为使用 NaCl 运行 Unity 网页播放器 (Web Player) 目录(.unity3d 文件)提供支持,这无需在 Chrome 上安装插件的情况下运行目录。这是早期版本 – 性能稳定,但不支持 Unity 网页播放器 (Web Player) 支持的所有功能,因为 NaCl 是一个不断更新的平台,不支持浏览器插件中支持的所有功能。

在 NaCl 上构建和测试游戏

在 NaCl 上构建和测试游戏非常简单。您需要安装 Google Chrome。只需在发布设置 (Build Settings) 中选择 “网页播放器 (Web Player)”,然后选中 “启用 (Enable) NaCl” 复选框。这将确保生成的 unity3d 文件可在 NaCl 上运行(通过添加 NaCl 所需的 GLSL ES 着色器和禁用 NaCl 不支持的动态字体),并安装 NaCl runtime 和 html 文件,以在 NaCl 中运行游戏。如果单击构建并运行 (Build & Run),Unity 会将播放器作为 Chrome 中的应用程序安装起来,并自动运行播放器。

使用 NaCl 安装游戏

在当前状态的默认情况下不会启用 Chrome 通用网页。将 NaCl 播放器嵌入至任何网页并指导用户在 chrome://flags 中手动启用 NaCl,目前,安装并立即运行 NaCl 游戏的唯一方法是在 Chrome Web 商店 (Store)(默认情况下将启用 NaCl)部署这些游戏。请注意,Chrome Web 商店 (Store) 是公开且不受限制的,可供您托管嵌入至自己网站的内容,或使用自有的付款处理系统(如果需要)。根据计划,Google 完成名为可移植 NaCl (PNaCl) 的新技术的开发工作后,NaCl 的局限性将得到改观,此技术允许您将可执行文件作为 LLVM 位码安装,从而让 NaCl 应用程序摆脱任何特定 CPU 体系结构的影响。然后应在任意网站上启用 NaCl。

构建尺寸注意事项

构建 NaCl 时,您可能会发现 “unity_nacl_files_3.x.x” 文件夹非常大,超过 100 MB。您可能想知道,每次运行 NaCl 目录时是否需要下载所有这些数据,答案通常是“不需要”。Chrome Web 商店 (Store) 有两种方式提供应用,一种是托管应用,一种是打包应用。如果以打包应用方式提供目录,则将在安装时将以压缩的存档文件形式下载所有数据,然后将所有数据存储在用户磁盘上。如果以托管应用方式提供内容,则每次将从 web 下载数据。但是,nacl runtime 将只从 “unity_nacl_files_3.x.x” 文件夹下载相关体系结构 (i686 or x86_64),正确配置 web 服务器后,系统将在传输时压缩数据,待传输的实际数据大小应为 10 MB 左右(使用物理剥离可缩减数据大小)。”unity_nacl_files_3.x.x” 文件夹包含可设置 Apache “.htaccess” 文件,以便在传输时压缩数据。如果正在使用其他 web 服务器,可能需要自己进行设置。

NaCl 的局限性

NaCl 并非支持常用 Unity 网页播放器 (Web Player) 的所有功能。后续版本的 Chrome 和 Unity 将支持其中许多功能。目前,NaCl 不支持以下这些功能:

  • 网络摄像头纹理 (Webcam Textures)
  • 游戏杆输入 (Joystick Input)
  • 缓存 (Caching)
  • 物质 (Substances)
  • 动态字体 (Dynamic Fonts)
  • 除 WWW 类之外的其他类型组成的网络
  • 分析器未运行,因为它需要将网络连接至编辑器 (Editor)。
  • 和标准网页播放器插件一样,NaCl 目前不支持本地 C/C++ 插件。

NaCl 支持以下功能,但存在一些局限性:

  • 深度纹理:
深度纹理适用于制作实时阴影和其他效果。Unity NaCl 支持深度纹理,但 Chrome 的 OpenGL ES 2.0 实施不支持所需的 Windows 扩展,因此,深度纹理不适用于 OS X 和 Linux。
  • 其他图形功能:
NaCl 使用 OpenGL ES 2.0,不支持普通 OpenGL 中的所有扩展。这表示有些功能受扩展影响,如 NaCl 目前不支持线性和 HDR 光照功能。另外,着色器 (Shaders) 需要编译为 GLSL 着色器。目前,并非所有内置 Unity 着色器都支持此功能,例如,GLSL 着色器不支持屏幕空间环境光遮蔽 (Screen Space Ambient Occlusion)。
  • 光标锁定:
支持光标锁定,但仅限于全屏模式。将来的 Chrome 版本计划在窗口模式下支持光标锁定。
  • NullReferenceExceptions(空引用异常):
NaCl 不支持硬件异常处理。这表示脚本代码中的 NullReferenceException 导致 NaCl 崩溃。但是,您可以将 softexceptions=”1″ 传送至嵌入的参数(构建开发播放器时由 Unity 自动设置),以告诉 mono 检查软件中是否存在 NullReferences(空引用),如有,则将减慢脚本的执行速度,但不会导致崩溃。

Google 未对使用 NaCl 设定任何系统要求,但 Mac 的操作系统至少应为 OS X 10.6.7,我们发现其在旧系统中运行效果不佳 – 尤其是使用旧 GPU 或图形驱动程序和主内存较小的系统。如需使用目标旧硬件,您会发现 网页播放器 (Web Player) 可提供更好的性能。

全屏模式:

设置 Screen.fullScreen 属性即支持全屏模式,您只可在用户释放鼠标按钮的情况下进入全屏模式。NaCl 实际上不会更改硬件屏幕分辨率,所以 Screen.resolutions 将只返回当前的桌面分辨率。但是,Chrome 支持渲染更小的后台缓冲区,然后将位图放大至屏幕大小。因此,请求更小的分辨率,然后桌面分辨率通常将支持全屏模式,但会导致根据 GPU 缩放屏幕,而非改变全屏模式。

WWW 类:

WWW 类支持 NaCl,但需要遵循 Unity 网页播放器 (Web Player) 的不同安全政策。Unity 网页播放器 (Web Player) 使用与闪存相似的 crossdomain.xml 政策文件,但 Unity NaCl 必须遵循 NaCl 遵循的跨域安全机制。实际上,要访问托管播放器的其他域中的 html 文档,需要将 web 服务器配置为传送 Access-Control-Allow-Origin 响应请求头,以便让此域托管播放器。

在 NaCl 中与浏览器 javascript 通信

NaCl 支持使用 JavaScript 与网页互动,并且这与使用 Unity 网页播放器 (Web Player) 互动很相似。这和从 html javascript 发送消息至 Unity 的语法有所不同,它必须通过 NaCl 模块。使用默认的 Unity 生成的 html 时,此代码将可以运行:

document.getElementById(‘UnityEmbed’).postMessage(“GameObject.Message(parameter)”);

要从 NaCl 调用浏览器 JavaScript 代码,可调用 Application.ExternalCall 或 Application.ExternalEval。但是,Google 已撤销对 Chrome 应用 Eval 函数的支持,因此,将其发布至 Chrome Web 商店也无法运行。为解决此问题,您可以使用 Application.ExternalEval 发送您在 unity_nacl.js moduleMessage 类函数中截获的字符串,或将应用设置为您满意的沙箱 (Sandbox)。

日志

NaCl 不允许访问用户文件系统,所以不会编写日志文件。而会将所有日志输出到标准输出流。要在 NaCl 中查看播放器日志:

  • 在编辑器中执行一次构建并运行 (Build & Run),确保您的游戏已作为应用程序安装到 Chrome。
  • 在 Mac OS X 上从终端启动 Chrome,然后单击其图标启动此应用程序。您应该可以在终端看到 Unity 播放器输出的日志。
  • Windows 系统也一样,但您需要设置 NACL_EXE_STDOUT 和 NACL_EXE_STDERR 环境变量,并使用不带沙箱的选项启动 Chrome。
2016-07-14 14:14:50 qq_22780533 阅读数 3660

首先创建一个android工程,这个很简单就不详细说明了。然后打开Unity的安装目录,找到需要用的class.jar文件,就是封装调用unity引擎的java源码,位置在Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar(安装目录),然后复制这个文件到android工程的libs目录,系统会自动引用,adt22以下不记得会不会,如果不会的话需要自己设置一下,右键工程

QQ截图20150515103111

添加这个文件即可。

然后把MainAtivity稍微改一下,就是把继承父类改成UnityPlayerActivity,这样就对接上了unity接口,源码如下:

为了显明观察显示,布局稍微改动了一下。把这个显示在我们的视图上。

activity_main.xml

配置清单文件,这个里面的包名要用到后面Unity的

android基本上就完成了。现在创建一个Unity工程,名字啥的随便取,然后在菜单File->Build Settings->Android->Player Settings

QQ截图20150515104138QQ截图20150515104308

最后生成的APK文件我们直接解压,把里面的assets目录下面的data目录复制到我们工程的assets目录下,然后把lib目录下的armeabi-v7a或armeabi一起复制(如果都有的话,只有其中一个就复制一个即可),最后编译我们的程序,运行效果如下:

device-2015-05-15-104600

白色是我们的布局容器,蓝色就是unity视图内容了。

下面继续说下在Unity中调用Andriod的函数,在Unity工程中创建一个C#脚本,直接将它绑定在摄像机中,它用来通知界面打开Activity。如下图所示,利用GUI在屏幕中创建两个按钮,点击按钮打开不同的Activity。

2019-02-21 15:26:29 qq_38456196 阅读数 714

1.开发流程

Flash:用Flash来开发游戏非常简单。因为关于它有无数的书籍,网站,教程,框架,视频和源代码。对于开发工具来说,Flex route是免费的,Flash IDE需要付费。Flash拥有通用且强大的矢量渲染功能,这意味这你创建的动画的文件格式会非常小。它全面支持音频和大多数的Adobe应用程序,例如 在Flash IDE中嵌入Illustrator 和 Photoshop。而且Flash还有大量的内置功能。

HTML5:编辑器例如JetBrains 的Astella会使编程变的不那么痛苦。有一些优秀的调试工具使浏览器调试也非常简单。有许多关于HTML5游戏开发的书籍,网站,在线资源和示例程 序。开发HTML5游戏的工具是免费,但是也有商业的工具,例如GameMaker HTML5 和Game Salad。如果你想让程序效率更高,并且你不怎么关注底层运行机制,你可以使用特定的的库类似ImpactJS。

Unity:有一个优秀的可视化编辑器,并且可以嵌入主流的3D应用程序中。基础版本是免费供家庭使用的。也可以在公司里使用,每年需要交纳不到 100K $ 的费用。专业版本带有各种插件,价格在1500$上下。一旦你有了Unity,大量的教程和资源也随之提供,所以学习并不是问题。

 

2.平台稳定性

Flash:Flash是跨平台的,它不在乎你用的操作系统和浏览器是什么,不管你是破旧的IE或是最新的Chrome。只要你使用的平台上有Flash Player,对于体验来说都是一样的。Adobe每年都会发布一个新版本和许多现有版本的更新。

HTML5:HTML5一直处于变动中。基于此有2个副作用:第一,即便你什么都没有做,你的游戏仍然有潜在的崩溃可能。这是因为之前你已经升级或 使用其他浏览器了。第二,你必须考虑多平台。在Chrome上可以运行只是第一步,你还必须处理IE,Firefox,Safari和各种操作系统。由此 带来的维护成本也不能低估。另外,最大的技术挑战包括音频支持以及不一致的画布渲染速度等。

Unity: Unity的web player拥有和Flash一样的优势。Unity的插件也是跨平台的。Unity本身也会定期的发布新功能。

 

3.向后兼容性

Flash:10年前,用AS1制作的游戏仍旧可以在现在的Flash Player11上运行。向后兼容性十分出色。

HTML5:对于HTML5来说,比较向后兼容性有点不公平,因为它还在发展中。这意味着,如果它不符合W3C标准,就会被废弃。

Unity:Unity并不支持以前的插件,最开始我开期待它会像Flash一样,但似乎并不是这样。

 

4.移动性

Flash:直到今天前,我可以说,除了iOS平台,Flash插件对于移动平台的支持是伟大的。 但是Adobe官方宣布已经不再对移动设备上的Flash Player插件继续支持了,你可以认为它已经完全死了。当然你可以通过AIR来创建移动应用程序,但是这些不属于web game的范畴,所以我们不在此进行深入讨论。Stage3D对于移动的支持并不成熟,随着许多硬件厂商的合并,以及逐渐老化的AVM,对于Adobe的 开发者来说是一场艰难的战争。种种迹象表明,在重建过程中,Adobe已经把Oliver Goldman从AIR团队中调到云项目。Oliver在AIR中是核心人物,至于结果怎样,只能仁者见仁了。

HTML5:HTML5对于移动的支持力度越来越强,iOS5上已经看到了性能的明显提升。当移动浏览器开始介入这些新特性,例如触摸事件和加速度的支持,我对于HTML5的前景逐渐看好。当然,你必须处理不同的屏幕分辨率和画面比例,但是这个问题不是只有HTML5有。

Unity:Unity并不支持移动浏览器上的插件。考虑到Unity的强项在于原生移动应用程序的编译,我能理解原因。

更多unity2018的功能介绍请到paws3d学习中心查找。链接https://www.paws3d.com/learn/,也可以加入unity学习讨论群935714213

2016-03-02 22:07:28 seafors 阅读数 745

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持!

简介:


有的项目需要在Android中加入Unity功能,例如ANDROID应用中嵌入Unity3D视图(展示3D模型)

有的项目需要在Unity中加入Android功能,例如3D语音天气球(源码分享)——创建可旋转的3D球


由于Android中的功能和代码只能当作一个Unity插件,需要在Unity进行最终的Build后生成apk文件运行。

所以无论上面两种情况都涉及了在Unity中加入Android项目的Build步骤:

步骤:


1.确保Android工程代码正确,然后在Eclipse中build一下,使所有类都生成.class文件。


2.将所有.class文件打成jar包

例如我现在的工程目录为:C:\Users\95\Documents\GitHub\3D_Sphere\3DVoiceWeather。编译好的.class文件都在工程目录下的\bin\classes中。

打开cmd中cd到这个目录:cd C:\Users\95\Documents\GitHub\3D_Sphere\3DVoiceWeather\bin\classes

执行命令:jar -cvf class.jar *

没有意外就会在当前目录下生成一个class.jar,如下图:



3.将Android工程放入Unity中

在Unity中建立一个Plugins文件夹,在Plugins下建立Android文件夹(不能写错,不能修改)。

Android工程中的res文件夹,libs文件夹(如果有的话)和AndroidManifest.xml文件copy到Plugins-Android下:

Plugins-Android之下再创建一个bin文件夹,将之前生成的class.jar复制进去(名字随意)。



4.在设置Build参数

1.点击菜单

2.file

3.Build Settings

4.选择Android,并点击add current加入当前场景


5.点击Player Settings:

按下图设置Build参数,包括公司名,产品名,图标等等。这写都是随便写的,

***主要的就是红框中的Bundle Identifier*,它的值必须要和Android项目的包名一致***



5.Bulid

设置参数以后就可以点击Build按钮进行最后Build操作。

如果是第一次的话,会在Build过程中要求你设置Android的SDK,不要慌张,找到SDK目录选中即可。

等待完成。。。


Unity_Lua_简介

阅读数 139

Unity Socket 交互编程

阅读数 26570

没有更多推荐了,返回首页