- Unity学习要点
伊H
想到什么写什么学习unity游戏引擎
前言学习Unity作为游戏开发的强大工具,对于初学者来说,掌握一些基础而实用的技巧是非常重要的。这不仅能帮助你更快地上手,还能在项目开发过程中提高效率。以下是一些Unity初学者的使用技巧,希望能为你的学习之旅提供帮助。###1.熟悉Unity界面与工作流程**开始前先浏览**:初次打开Unity,花时间熟悉编辑器的各个部分,如Hierarchy(层次结构)、Scene(场景)、Inspector
- unity学习之 编辑器拓展 20190722
那年白马啸西风
unity编辑器拓展笔记
https://www.xuanyusong.com/archives/category/unity/unity3deditor-师傅给的教程总体来说,这个教程还是挺好的,说的很全面,但是这个教程使用的unity版本有点旧,而且有些实例是要用unity,所以只做了一半实例,,也因为要赶工作,所以就不一一做完了序号题目功能简述完成度完成度等级划分各部分划分描述数量1拓展的面板视图OnInspecto
- unity学习(38)——创建(create)角色脚本(panel)--EventSystem
u宅
学习
1.在scripts文件夹下创建一个脚本CreatePlayerPanel.cs,脚本挂到panel上!给panel加个tag,叫createPanel,脚本内容如下:usingSystem.Collections;usingSystem.Collections.Generic;usingTMPro;usingUnityEngine;publicclassCreatePlayerPanel:Mon
- Unity、C#、Lua资源链接
ζั͡拼未来i
设计模式unity
Unity学习笔记【Unity】Unity学习笔记目录整理_unity教程目录_是嘟嘟啊的博客-CSDN博客腾讯云开发者社区-腾讯云(tencent.com)Unity_虫虫!的博客-CSDN博客Unity_鹅厂程序小哥的博客-CSDN博客【Unity】Unity学习笔记目录整理_unity教程目录_是嘟嘟啊的博客-CSDN博客网络_OceanStar的学习笔记的博客-CSDN博客P-MVC框架解
- unity学习(15)——服务器组装(1)
u宅
学习
1.新建好的c#项目如下:文件夹中内容如下:此时已经可以通过vs2022打开.sln文件,就可以打开项目了。2.我们把逆向后(主程序)的内容的代码粘贴过去。有些逆向功底,很快可以定位到,服务器的入口函数ServerStart.start(10100);其原始代码如下:namespaceGameServer.Hnalder{internalclassServerStart{privatestatic
- 【Unity学习日记03】数据持久化
manqi_
unity学习游戏引擎
目录1概念2PlayerPrefs2.1概念2.2操作1存储2读取3删除2.3Windows存储位置2.4优缺点分析2.5自定义类的存储3JSON3.1概念3.2JsonUtility1JsonUtility.ToJson2JsonUtility.FromJson3JsonUtility.FromJsonOverwrite3.3支持/不支持Unity序列化1字段2类3.4基于Json的简易存档系统
- unity学习(29)——GameInfo角色信息
u宅
学习
1.把GameInfo.csPlayerModel.csVector3.csVector4.csPlayerStateConstans.csGameState.cs依次粘到model文件夹中,此时项目没有错误,如下图所示;对应处所修改的代码如下:caseLoginProtocol.LOGIN_SRES://1{Debug.Log("成功登录,要进行场景跳转了");//继承一些信息,来自loginh
- unity学习(26)——客户端与服务器合力完成注册功能(8)json编解码问题,大结局
u宅
学习
服务器端发送的内容如下:客户端所接受的内容如下:是一样的,不是传输问题,少了一个解码的过程,之前那个addMessage函数应该是不能解码的!具体解析一下数据包的内容:上边的是成功的,下面的是失败的。0000001e0000000000000000000000030000000e7b2276616c7565223a747275657d0000001f000000000000000000000003
- unity学习(27)——修改text控件的内容
u宅
学习
手游最大的特点就是简单易懂好上手。1.在canvas上添加一个text的UI,内容设置为空。在字体处添加宋体,增加一个tag。2.修改LoginHandler中的内容如下:(之前有从inputFiled中获取文字的经验)publicvoidLoginHandler(SocketModelmodel)//type=LOGIN的都先进这里{Debug.Log("这里是LoginHandler.cs要r
- unity学习(28)——登录功能
u宅
学习
有之前注册的知识,登录就很容易处理了。登陆成功返回id:登录失败返回null:测试同一账号不能重复登陆!登录成功后最好可以跳到新的场景中结果是好的,去服务器看一下对应部分的代码,可见,登录成功返回的确实是账号的idpublicstringlogin(stringuserName,stringpassword,Sessionsession){if(!this.accounts.ContainsKey
- unity学习(18)——服务器执行流程
u宅
学习
服务器流程如下:1.Program.Main()->2.ServerStart.start()->3.socket.BeginAccept+ServerStart.AcceptCallBack接收客户端的连接,然后转向处理函数->暂时还没有测试多开,编译一次挺麻烦的4.socket.BeginReceive->erverStart.ReceiveCallBack->ServerStart.read
- unity学习(19)——客户端与服务器合力完成注册功能(1)入门准备
u宅
学习服务器运维
逆向服务器用了三天的时间,但此时觉得一切都值,又可以继续学习了。服务器中登录请求和注册请求由command变量进行区分,上一层的type变量都是login。publicvoidprocess(Sessionsession,SocketModelmodel){switch(model.Command){case0:this.login(session,model);break;case2:this.
- unity学习(22)——客户端与服务器合力完成注册功能(4)数据库化
u宅
学习
单纯的账号密码这种非频繁读写,实现起来很简单的,游戏的属性信息到时候也许会比较麻烦。思路:每次加入有新键值TryAdd,如果加入成功,直接重写账号密码文件即可。C#JsonConvert.DeserializeObject反序列化与JsonConvert.SerializeObject序列化(一)-CSDN博客在vs中->项目->NuGet,搜索安装Newtonsoft.Json。转化部分的代码如
- unity学习(25)——客户端与服务器合力完成注册功能(7)逻辑流程彻底解决
u宅
unity学习服务器
在服务器LoginHandler类中:publicvoidlogin(Sessionsession,SocketModelmodel){LoginDTOloginDto=Coding.decode(model.Message);//MyLog.form.textAdd("用户申请登录"+loginDto.userName+""+loginDto.passWord);Console.WriteLin
- unity学习(13)——逆向服务器
u宅
学习
学习参考教程从始至终没有讲解和提供服务器代码,但是有exe文件,随着学习的深入,发现必须获取服务器代码。dotpeek的下载链接DownloaddotPeek:Free.NETDecompilerbyJetBrainsdotpeek教学dotpeek反编译修改代码-百度文库(baidu.com)file->open,选择exe程序所在的文件夹,在assemblyexplorer中右键点击加载进来的
- unity学习(16)——服务器组装(3)命名空间问题
u宅
学习
usingGameServer.logic;usingGameServer.NetModel;代码中这两句存在命名空间的引用问题,c#和c++不一样,用的的using和命名空间,之前的惯性思维都是include和文件路径。错误:直接把逆向文件夹粘到项目文件夹中,这样做vs的资源管理器根本没反应:正确:在资源管理器中点击GameServer,然后ctrl+v,直接就进来了,而且错误直接减少成11个了
- unity学习(23)——客户端与服务器合力完成注册功能(5)客户端显示注册结果
u宅
学习
注册过程最后一步,有这个基础,登录也非常简单了。session.write(0,0,3,(object)newBoolDTO(v));直接进write函数,很明显就是给客户端返回一个数据包。publicvoidwrite(inttype,intarea,intcommand,objectmessage){SocketModelsocketModel=newSocketModel(type,area
- unity学习(20)——客户端与服务器合力完成注册功能(2)调试注册逻辑
u宅
学习
接着上一节的问题,想办法升级成具备数据库功能的服务器,这个是必须的。至少在初始化要学会把文件转换为session,新知识,有挑战的。现在是从LoginHandler.cs跳到了AccountBiz.cs的create,跳度还是很大的。create函数中的内容都没有输出,这时需要用到断点的技巧了!f5开始调试,确实是断在了我需要的地方f11,也确实进入了之前提到的create函数Debug.Writ
- unity学习(12)——简单的json解码过程
u宅
unity学习java
1.在SocketModel的minna命名空间中怎加如下三个类,用来解析json网络通信。publicclassStringDTO{publicstringvalue;publicStringDTO(){}publicStringDTO(stringv){this.value=v;}}publicclassIntDTO{publicintvalue;publicIntDTO(){}publicI
- 【Unity学习笔记】ScrollView和ScrollRect组件
一白梦人
Unity学习笔记ugui
声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨。可作参考,但不保证绝对正确。如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦1.ScrollView简介ScrollView是滚动视图,当我们要呈现的内容长宽大于显示区域时,就可以用到ScrollView,用户可以在指定区域内拖拽而查看内容的全貌(如下图)。2.结构分析1.结构看似繁琐,但只要稍微理一下,还是比较容易理清的。大体可以看
- unity学习(24)——客户端与服务器合力完成注册功能(6)整体逻辑总结——典中典
u宅
学习
回顾一下注册过程的整体逻辑:一共分为步。之后的所有网络操作其实都大同小异。客户端上:1.(框架)canvas对象上挂着NetWorkScript,利用socket建立网络连接的机制,利用BeginReceive和ReceiveCallBack,不断循环接受来自服务器的数据包。2.(具体)sendMessage函数的作用是向服务器单次发送数据包,目前是在点击“登录按钮”和“注册按钮”时分别使用。3.
- 自己造轮子: Unity打造Timer定时器框架
游戏程序猿
1:为什么我们要自己造轮子来做定时器系统传统的Unity做定时器的方式有三种,总结如下:这里有个unity学习小组点击可以直接进入(1)在组件类里面定义一个变量,每次Update的时候,累积时间,当时间到达特定的阈值时,触发函数调用。voidUpdate(){floatdt=Time.deltaTime;this.passedTime+=dt;if(this.passedTime>=阈值){doS
- unity学习(10)——完成游戏内部消息收发
qq_27863281
网络服务器运维
‘XXX‘ismissingtheclassattribute‘ExtensionOfNativeClass‘!_ismissingtheclassattribute'extensionofnativec-CSDN博客首先明白流程,1点击按钮->2RegPanelScript中的LoginClick()->3NetWorkScript.getInstance().sendMessage->4soc
- unity学习(11)——消息分类处理
qq_27863281
unity学习服务器
学习目标:彻底搞懂游戏内部消息,网络消息和内部消息结构一样,一通百通。1.按照(10)中的方式给注册按钮也完善其所对应的触发函数。实现发送“注册申请”。publicvoidRegistClick()//登录按钮{//先find,tag的效率更高-给inputfiled的text添加标签TMP_Texta=GameObject.FindWithTag("usernameR").GetComponen
- unity学习(4)——控件
qq_27863281
unity学习游戏引擎
1.图片拖入asset,属性设成sprite;把图片拖到sourceimage中;colour白色;material为spritedefault;imagetype改成filled。2.账号密码文字text,button中文(windows自带的黑体直接拖进去即可);input输入栏;以上都不要选legacy里面的。如何解决Unity2021版本中UI显示中文乱码的问题_单机游戏热门视频(bili
- unity学习(5)——panel
qq_27863281
学习
1.unity和vs中都需要主动按ctrl+s,同时在unity中一定要注意退出游戏的执行状态,要不就都白干了。2.制作注册panel,也是ui的一种而已,再在panel中做一下上一篇的内容。3.因为这次最后加的image,遮挡住了复制过来的textinput和button,需要调整面板内部ui的上下关系。直接在hierarchy中上下拖动即可,立竿见影。panel和其他的控件之间也存在这种层级关
- unity学习(6)——通过button获取inputField的内容
qq_27863281
unity学习游戏引擎
先登录功能,注册功能照猫画虎。1.给两个inputFiled的Textaddtag,通过tag获取两个输入框内容的代码如下。usingUnityEngine;usingSystem.Collections;usingSystem.Security.Cryptography.X509Certificates;usingUnityEngine.UI;usingTMPro;usingSystem;usi
- unity学习(7)——handler 游戏内部消息机制(暂不涉及网络)
qq_27863281
学习
1.NetWorkScript这个脚本是挂在Canvas上的,并不是Camera上。2.在Scripts文件夹下创建一个Handler的子文件夹,在里面创建一个脚本LoginHandlerusingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassLoginHandler:MonoBehav
- unity学习(9)——全局对象(真正的地狱难度)
qq_27863281
学习
NetWorkScript这个脚本中,直接在类的定义中初始化了NetWorkScript对象,为了是实现全局统一使用一个全局类的效果!NetWorkScript不能继承MonoBehaviour,要不里面就不能通过new来创建全局实例了!血的教训。去掉继承就不卡了,原来warming也可以让游戏卡到怀疑人生。NetWorkScript继承MonoBehaviour就无法绑定到unity组件上了!不
- unity学习(1)——控件与脚本的入门
qq_27863281
学习unity
学习资料参考视频1Unity3dARPG网络游戏编程实践(一):网络连接(unityNetWork与socket的对比)(流畅)_哔哩哔哩_bilibili1.创建项目2创建sense3创建button4给button添加脚本,要继承MonoBehavior,命名支持中文的usingSystem.Collections;usingSystem.Collections.Generic;usingSy
- ASM系列五 利用TreeApi 解析生成Class
lijingyao8206
ASM字节码动态生成ClassNodeTreeAPI
前面CoreApi的介绍部分基本涵盖了ASMCore包下面的主要API及功能,其中还有一部分关于MetaData的解析和生成就不再赘述。这篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。
在介绍前,先要知道一点, Tree工程的接口基本可以完
- 链表树——复合数据结构应用实例
bardo
数据结构树型结构表结构设计链表菜单排序
我们清楚:数据库设计中,表结构设计的好坏,直接影响程序的复杂度。所以,本文就无限级分类(目录)树与链表的复合在表设计中的应用进行探讨。当然,什么是树,什么是链表,这里不作介绍。有兴趣可以去看相关的教材。
需求简介:
经常遇到这样的需求,我们希望能将保存在数据库中的树结构能够按确定的顺序读出来。比如,多级菜单、组织结构、商品分类。更具体的,我们希望某个二级菜单在这一级别中就是第一个。虽然它是最后
- 为啥要用位运算代替取模呢
chenchao051
位运算哈希汇编
在hash中查找key的时候,经常会发现用&取代%,先看两段代码吧,
JDK6中的HashMap中的indexFor方法:
/**
* Returns index for hash code h.
*/
static int indexFor(int h, int length) {
- 最近的情况
麦田的设计者
生活感悟计划软考想
今天是2015年4月27号
整理一下最近的思绪以及要完成的任务
1、最近在驾校科目二练车,每周四天,练三周。其实做什么都要用心,追求合理的途径解决。为
- PHP去掉字符串中最后一个字符的方法
IT独行者
PHP字符串
今天在PHP项目开发中遇到一个需求,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下:
$str = "1,2,3,4,5,6,";
$newstr = substr($str,0,strlen($str)-1);
echo $newstr;
- hadoop在linux上单机安装过程
_wy_
linuxhadoop
1、安装JDK
jdk版本最好是1.6以上,可以使用执行命令java -version查看当前JAVA版本号,如果报命令不存在或版本比较低,则需要安装一个高版本的JDK,并在/etc/profile的文件末尾,根据本机JDK实际的安装位置加上以下几行:
export JAVA_HOME=/usr/java/jdk1.7.0_25  
- JAVA进阶----分布式事务的一种简单处理方法
无量
多系统交互分布式事务
每个方法都是原子操作:
提供第三方服务的系统,要同时提供执行方法和对应的回滚方法
A系统调用B,C,D系统完成分布式事务
=========执行开始========
A.aa();
try {
B.bb();
} catch(Exception e) {
A.rollbackAa();
}
try {
C.cc();
} catch(Excep
- 安墨移动广 告:移动DSP厚积薄发 引领未来广 告业发展命脉
矮蛋蛋
hadoop互联网
“谁掌握了强大的DSP技术,谁将引领未来的广 告行业发展命脉。”2014年,移动广 告行业的热点非移动DSP莫属。各个圈子都在纷纷谈论,认为移动DSP是行业突破点,一时间许多移动广 告联盟风起云涌,竞相推出专属移动DSP产品。
到底什么是移动DSP呢?
DSP(Demand-SidePlatform),就是需求方平台,为解决广 告主投放的各种需求,真正实现人群定位的精准广
- myelipse设置
alafqq
IP
在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的数倍。因此项目的可维护性、可复用性是衡量一个项目好坏的关键。而注释则是可维护性中必不可少的一环。
注释模板导入步骤
安装方法:
打开eclipse/myeclipse
选择 window-->Preferences-->JAVA-->Code-->Code
- java数组
百合不是茶
java数组
java数组的 声明 创建 初始化; java支持C语言
数组中的每个数都有唯一的一个下标
一维数组的定义 声明: int[] a = new int[3];声明数组中有三个数int[3]
int[] a 中有三个数,下标从0开始,可以同过for来遍历数组中的数
- javascript读取表单数据
bijian1013
JavaScript
利用javascript读取表单数据,可以利用以下三种方法获取:
1、通过表单ID属性:var a = document.getElementByIdx_x_x("id");
2、通过表单名称属性:var b = document.getElementsByName("name");
3、直接通过表单名字获取:var c = form.content.
- 探索JUnit4扩展:使用Theory
bijian1013
javaJUnitTheory
理论机制(Theory)
一.为什么要引用理论机制(Theory)
当今软件开发中,测试驱动开发(TDD — Test-driven development)越发流行。为什么 TDD 会如此流行呢?因为它确实拥有很多优点,它允许开发人员通过简单的例子来指定和表明他们代码的行为意图。
TDD 的优点:
&nb
- [Spring Data Mongo一]Spring Mongo Template操作MongoDB
bit1129
template
什么是Spring Data Mongo
Spring Data MongoDB项目对访问MongoDB的Java客户端API进行了封装,这种封装类似于Spring封装Hibernate和JDBC而提供的HibernateTemplate和JDBCTemplate,主要能力包括
1. 封装客户端跟MongoDB的链接管理
2. 文档-对象映射,通过注解:@Document(collectio
- 【Kafka八】Zookeeper上关于Kafka的配置信息
bit1129
zookeeper
问题:
1. Kafka的哪些信息记录在Zookeeper中 2. Consumer Group消费的每个Partition的Offset信息存放在什么位置
3. Topic的每个Partition存放在哪个Broker上的信息存放在哪里
4. Producer跟Zookeeper究竟有没有关系?没有关系!!!
//consumers、config、brokers、cont
- java OOM内存异常的四种类型及异常与解决方案
ronin47
java OOM 内存异常
OOM异常的四种类型:
一: StackOverflowError :通常因为递归函数引起(死递归,递归太深)。-Xss 128k 一般够用。
二: out Of memory: PermGen Space:通常是动态类大多,比如web 服务器自动更新部署时引起。-Xmx
- java-实现链表反转-递归和非递归实现
bylijinnan
java
20120422更新:
对链表中部分节点进行反转操作,这些节点相隔k个:
0->1->2->3->4->5->6->7->8->9
k=2
8->1->6->3->4->5->2->7->0->9
注意1 3 5 7 9 位置是不变的。
解法:
将链表拆成两部分:
a.0-&
- Netty源码学习-DelimiterBasedFrameDecoder
bylijinnan
javanetty
看DelimiterBasedFrameDecoder的API,有举例:
接收到的ChannelBuffer如下:
+--------------+
| ABC\nDEF\r\n |
+--------------+
经过DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())之后,得到:
+-----+----
- linux的一些命令 -查看cc攻击-网口ip统计等
hotsunshine
linux
Linux判断CC攻击命令详解
2011年12月23日 ⁄ 安全 ⁄ 暂无评论
查看所有80端口的连接数
netstat -nat|grep -i '80'|wc -l
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看TCP连接状态
n
- Spring获取SessionFactory
ctrain
sessionFactory
String sql = "select sysdate from dual";
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
String[] names = wac.getBeanDefinitionNames();
for(int i=0; i&
- Hive几种导出数据方式
daizj
hive数据导出
Hive几种导出数据方式
1.拷贝文件
如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。
hadoop fs –cp source_path target_path
2.导出到本地文件系统
--不能使用insert into local directory来导出数据,会报错
--只能使用
- 编程之美
dcj3sjt126com
编程PHP重构
我个人的 PHP 编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考 PHP 手册。希望下面的代码,会更有利于对递归以及静态变量的理解
header("Content-type: text/plain");
function static_function () {
static $i = 0;
if ($i++ < 1
- Android保存用户名和密码
dcj3sjt126com
android
转自:http://www.2cto.com/kf/201401/272336.html
我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码
1、通过普通 的txt文本存储
2、通过properties属性文件进行存
- Oracle 复习笔记之同义词
eksliang
Oracle 同义词Oracle synonym
转载请出自出处:http://eksliang.iteye.com/blog/2098861
1.什么是同义词
同义词是现有模式对象的一个别名。
概念性的东西,什么是模式呢?创建一个用户,就相应的创建了 一个模式。模式是指数据库对象,是对用户所创建的数据对象的总称。模式对象包括表、视图、索引、同义词、序列、过
- Ajax案例
gongmeitao
Ajaxjsp
数据库采用Sql Server2005
项目名称为:Ajax_Demo
1.com.demo.conn包
package com.demo.conn;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
//获取数据库连接的类public class DBConnec
- ASP.NET中Request.RawUrl、Request.Url的区别
hvt
.netWebC#asp.nethovertree
如果访问的地址是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu那么Request.Url.ToString() 的值是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree<&
- SVG 教程 (七)SVG 实例,SVG 参考手册
天梯梦
svg
SVG 实例 在线实例
下面的例子是把SVG代码直接嵌入到HTML代码中。
谷歌Chrome,火狐,Internet Explorer9,和Safari都支持。
注意:下面的例子将不会在Opera运行,即使Opera支持SVG - 它也不支持SVG在HTML代码中直接使用。 SVG 实例
SVG基本形状
一个圆
矩形
不透明矩形
一个矩形不透明2
一个带圆角矩
- 事务管理
luyulong
javaspring编程事务
事物管理
spring事物的好处
为不同的事物API提供了一致的编程模型
支持声明式事务管理
提供比大多数事务API更简单更易于使用的编程式事务管理API
整合spring的各种数据访问抽象
TransactionDefinition
定义了事务策略
int getIsolationLevel()得到当前事务的隔离级别
READ_COMMITTED
- 基础数据结构和算法十一:Red-black binary search tree
sunwinner
AlgorithmRed-black
The insertion algorithm for 2-3 trees just described is not difficult to understand; now, we will see that it is also not difficult to implement. We will consider a simple representation known
- centos同步时间
stunizhengjia
linux集群同步时间
做了集群,时间的同步就显得非常必要了。 以下是查到的如何做时间同步。 在CentOS 5不再区分客户端和服务器,只要配置了NTP,它就会提供NTP服务。 1)确认已经ntp程序包: # yum install ntp 2)配置时间源(默认就行,不需要修改) # vi /etc/ntp.conf server pool.ntp.o
- ITeye 9月技术图书有奖试读获奖名单公布
ITeye管理员
ITeye
ITeye携手博文视点举办的9月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。 9月试读活动回顾:http://webmaster.iteye.com/blog/2118112本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《NFC:Arduino、Andro