各位朋友大家好,欢迎大家关注我的博客,我是 Payne,我的博客地址是http://qinyuanpei.com。最近一位朋友问我,如何在 Unity 引擎中实现类似《英雄联盟》中选择皮肤时的 3D 滚动视图效果,虽然我非常不喜欢这个游戏,可是大学四年在宿舍里被周围同学们耳濡目染,对这个游戏中常见英雄的口头禅还是颇为熟悉的,曾经在周围同学的“硝烟”和“噪杂”中熬夜编程,此时此刻想起来大概是最能让我怀念和骄傲的记忆了。剑圣说“你的剑就是我的剑”,伊泽瑞尔说“是时候表演真正的技术了”,杰斯说“为了更美好的明天而战”……或许曾经的某一瞬间,我们曾经有过类似的让你我疯狂着迷的人生信条,可是不管怎样,我希望我们可以将这些永远地铭刻在心里,如同心中栽种下一棵红莲,在黑夜中静静地等待开放,这样当此去经年亦或时过境迁的时候,我们不会说是时光抹去了你我年轻的棱角,因为我相信真正的棱角会因为磨砺而变得更加明亮,绝对不会因为此刻的苟且就变的麻木甚至迷茫。好了,喝完我这碗心灵鸡汤,下面我们来一起学习如何在 Unity3D 中使用 uGUI 实现 3D 滚动视图效果。
各位朋友大家好,欢迎关注我的博客,我的博客地址是:https://blog.yuanpei.me。最近因为受到工作上业务因素影响,所以博主在 Unity 引擎上的研究有所停滞。虽然目前的工作内容和 Unity3D 没有直接的关联,可是我觉得工程师应该有这样一种情怀,即工作和兴趣是完全不同的两个概念。编程对我而言,首先是一种兴趣,其次是一份工作。所以我宁愿在每天下班以后继续研究自己感兴趣的东西,而非为了取悦这个世界、为了加班而加班。最近广电总局让整个游戏行业都坐立不安了,因为其新发布的一系列规定,让中国的独立游戏开发者怨声载道。可是我们更应该看到积极的一面是,无数的小游戏公司会在最近数月内大量消失,或许对中国野蛮生长的游戏行业这是一次“形式”上的整顿,可对我们开发者来说,在这个过程中努力提升自我、巩固基础永远比追求时髦、流行的技术或者框架有意义的多,因为热闹的从来都是昙花一现般的璀璨,而永恒的永远都是历久弥新的真理。好了,闲言少叙,今天我们的话题是在 uGUI 中使用不规则精灵制作按钮。
各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。到目前为止,我已经发布了 3 篇 HTTP 服务器开发的系列文章。对我个人而言,我非常享受这个从无到有的过程,或许我现在写的这个 Web 服务器有各种不完美的因素,可是当有一天我需要一个轻量级的服务器的时候,我在无形中是不是比别人多了一种选择呢?我们常常提到“不要重复造轮子”,可事实上这并不能成为我们“不造轮子”的理由,虽然我们有各种各样的服务器软件、有各种各样的服务端框架可以供我们选择,可是在动手写这个系列文章前,我对 Web 服务器的印象无非是因为我是用 LAWP(Linux + Apache + MySQL + PHP)搭建过 Wordpress 博客而已。虽然在对动态页面(如.aspx、.jsp、.php 等)的处理上,可能会和静态页面有所不同,但是我庆幸我了解了这个过程以及它的内部原理,这种跨语言、跨平台的设计思路是任何框架或者标准都无法告诉我的。或许有人会问我,为什么不在最开始的时候就选择更简单的实现方法,那么在这篇文章中你将会找到答案。
各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。在这个系列文章的第一篇中,我们着重认识和了解了 HTTP 协议,并在此基础上实现了一个可交互的 Web 服务器,即当客户端访问该服务器的时候,服务器能够返回并输出一个简单的“Hello World”。现在这个服务器看起来非常简陋,为此我们需要在这个基础上继续开展工作。今天我们希望为这个服务器增加主页支持,即当我们访问这个服务器的时候,它可以向我们展示一个定制化的服务器主页。通常情况下网站的主页被定义为 index.html,而在动态网站技术中它可以被定义为 index.php。了解这些将有助于帮助我们认识 Web 技术的实质,为了方便我们这里的研究,我们以最简单的静态页面为例。
各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。在我们这个 Web 服务器有了一个基本的门面以后,我们是时候来用它做点实际的事情了。还记得我们最早提到 HTTP 协议的用途是什么吗?它叫超文本传输协议啊,所以我们必须考虑让我们的服务器能够接收到客户端传来的数据。因为我们目前完成了大部分的工作,所以对数据传输这个问题我们这里选择以最简单的 GET 和 POST 为例来实现,这样我们今天的重点就落实在 Get 和 Post 的实现这个问题上来。而从原理上来讲,无论 Get 方式请求还是 Post 方式请求,我们都可以在请求报文中获得其请求参数,不同的是前者出现在请求行中,而后者出现在消息体中。例如我们传递的两个参数 num1 和 num2 对应的数值分别是 12 和 24,那么在具体的请求报文中我们都能找到类似“num1=12&num2=24”这样的字符结构,所以只要针对这个字符结构进行解析,就可以获得客户端传递给服务器的参数啦。
各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。到目前为止,“使用C#开发HTTP服务器”这个系列系列文章目前已经接近尾声了,虽然我们在服务器功能的完整性(如支持并发、缓存、异步、Htts等)上没有再继续深入下去,可是我们现在已经具备了一个基本的服务器框架啦,所以更多深层次的问题就需要大家根据自己的需要来扩展了,因为写博客更多的是一种“记录-输出-反馈”的一个过程,所以我更希望大家在看完我的博客后能对我有所反馈,因为抄博客上的代码实在是太无聊啦!好了,保持愉悦的心情我们下面来引出今天的话题:构建RESTful API。RESTful API,这个概念或许你曾经听说过,可能它和我们所熟悉的各种Web息息相关,甚至在某种意义上来讲它并不是一种新的技术,而这一切的一切归根到底都是在问一个问题,即网站真的是Web的唯一形态吗?
各位朋友大家好,我是秦元培,欢迎大家关注我的博客。从今天起,我将开始撰写一组关于 HTTP 服务器开发的系列文章。我为什么会有这样的想法呢?因为人们对 Web 技术存在误解,认为网站开发是 Web 技术的全部。其实在今天这样一个时代,Web 技术可谓是无处不在,无论是传统软件开发还是移动应用开发都离不开 Web 技术,所以在我的认识中,任何使用了 HTTP 协议实现数据交互都可以认为是 Web 技术的一种体现,而且当我们提及服务器开发的时候,我们常常提及 Java 或者 PHP。可是这些重要吗?不,在我看来服务器开发和语言无关,和 IIS、Tomcat、Apache、Ngnix 等等我们熟知的服务器软件无关。Web 技术可以像一个网站一样通过浏览器来访问,同样可以像一个服务一样通过程序来调用,所以在接下来的时间里,我将和大家一起见证如何使用 C# 开发一个基本的 HTTP 服务器,希望通过这些能够让大家更好的认识 Web 技术。
最近想尝试对一个 Ghost 博客主题进行移植,因为对一个后端程序员来说,进行前端方面的工作实在是个不小的挑战,而我对 CSS 更是有种与生俱来的恐惧感,所以我是非常喜欢Bootstrap和Materilize这种对后端程序员友好的前端框架。现在前端技术如火如荼,而前端技术作为最有可能实现跨平台技术的技术形态,相对原生技术有着更为灵活的适应性和扩展性,因此以响应式设计为代表的 Web 技术,能够让 Web 页面在不同尺寸屏幕上都有着相近的体验,因为目前软件开发基本都是在计算机设备上来完成的,这样我们在制作 Web 页面的时候就需要在不同的设备上进行调试,如果每次都将 Web 页面部署到远程服务器上,这样将浪费大量的时间而且容易将测试阶段的问题暴露给用户,因此本文将采用一种扫描二维码的方式来实现在移动设备上浏览响应式页面。
在使用 Mono 让.NET 程序跨平台运行这篇文章中,我们已经对 Mono 以及.NET 程序的运行机制有了初步的理解。今天我想来谈谈"使用 Mono 打造轻量级的.NET 运行时"这样一个话题。为什么我会有这样一种想法呢?因为 Mono 和.NET 都可以执行 IL 代码,所以我用 Mono 来作为.NET 程序的运行时是一个顺理成章的想法。由于.NET 程序需要.NET Framework 提供运行支持,所以当目标设备没有安装.NET Framework 或者.NET Framework 版本不对的时候,我们的程序都无法顺利运行。强迫用户安装.NET 框架无疑会影响用户体验,在 Windows XP 尚未停止服务前,国内软件厂商为了兼容这些用户,通常会选择 C++这类语言来编写原生应用,这就造成了国内.NET 技术长期不被重视的现状。
众所周知,Unity3D 引擎凭借着强大的跨平台能力而备受开发者的青睐,在跨平台应用开发渐渐成为主流的今天,具备跨平台开发能力对程序员来说就显得特别重要。传统的针对不同平台进行开发的方式常常让开发者顾此失彼,难以保证应用程序在不同的平台都有着相同的、出色的体验,这种情况下寻找到一种跨平台开发的方式将会为解决这个问题找到一种思路。从目前的开发环境来看,Web 应该是最有可能成为跨平台开发的神兵利器,可是长期以来 Web 开发中前端和后端都有各自不同的工作流,虽然现在出现了前端和后端逐渐融合的趋势,可在博主看来想让 Web 开发变得像传统开发这样简单还需要一定的过渡期。
各位朋友,大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是:http://qinyuanpei.com。今天博主想和大家分享的是在 Unity3D 中基于订阅者模式实现消息传递机制,我们知道 Unity3D 中默认提供了一种消息传递机制 SendMessage,虽然 SendMessage 使用起来的确非常简单,可是它的这种简单是建立在付出一定的代价的基础上的。经常有朋友提及不同的模块间如何进行通信的问题,可能答案最终会落到单例模式、委托和事件机制这些关键词上,在这种情况下本文所探讨的内容可能会帮助你找到最终的答案。
最近在学习 Shader 时感觉 Shader 语言参数众多、语法诡异,如果每次都从头开始写 Shader 一定是一件痛苦的事情。如果可以在本地定义好一组标准的 Shader 模板,这样当我们需要实现某些效果类似的 Shader 时,就可以在这个 Shader 模板的基础上进行修改。因为 Shader 文件是一个文本文件,所以我们可以非常容易地创建这样一个模板,在这个模板中我们可以进一步完善相关的参数注释,这样就不用每次写 Shader 的时候都需要查文档了,从这个角度出发,就进入了这篇文章的正题:扩展 Unity3D 编辑器的脚本模板。
最近开始着手Shader语言的学习,因为Unity3D没有提供类似虚幻四引擎的材质编辑器功能,所以当在Unity3D中碰到需要提供引擎默认材质以外的效果的时候,就需要我们来编写Shader以实现各种特效,本文主要是结合《Cg Programming in Unity》这本书和浅墨博客中关于Shader的这部分内容来学习和整理,目的是帮助博主快速掌握Shader语言。
各位朋友大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是http://qinyuanpei.com。到现在为止,我们对 EasyAR 中的 ImageTarget 基本上可以说是驾轻就熟了,因此我们这个系列教程可以说是接近尾声了。博主第一次接触 AR 这个概念是在大学时候读到一本讲解计算机图形视觉的书籍里,相对 VR 技术目前华而不实的市场现状,AR 技术从实用性和成熟度都能得到较好的保证。可是大家都清楚这些技术背后都是建立在复杂而高深的图形学算法的基础上的,如果想学习 AR 技术请回归计算机图形学的本源,这就和学习游戏技术要追寻可编程渲染管线是一样的,所以这个系列完全是博主个人的兴趣使然,希望了解这个技术的可以进行更加深入的探索。这次我们来说说 VideoTarget 如何实现吧!
各位朋友大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是http://qinyuanpei.com。最近 EasyAR 终于迎来了一次重大的版本更新:v1.10,真可谓是“千呼万唤始出来”啊,所以在官方文档和示例项目基本完善的情况下,博主决定将 EasyAR 尝鲜系列教程继续下去。本次教程主要以官方新发布的 Unity 示例项目为基础来进行讲解,关注 Androis/iOS 原生应用开发的朋友请自行针对官方示例项目进行研究。好了,今天主要的内容是通过 EasyAR SDK 来自行构建一个 ImageTarget 的实例,采用 Unity3D 4.6.4 版本进行开发。