在上一篇,我们刚刚结束了 脚本生成专题,我们知道 QF 提供了两种脚本生成模式,一种是 ViewController + Bind ,另一种是 UI Kit 模式. 本来打算,介绍完 ViewController + Bind 模式后,再介绍 UI Kit 模式. 但是在学习 UI Kit 之前,我们需要先了解一点 Res Kit. Res Kit 简介 Res Kit,是 QF 的一大杀器,顾名思义,它是负责资源的. 特性如下: 可以使用一个 API 从 dataPath.Resources.…
在上一篇我们了解了 Res Kit 的一些背后设计原理,讲解了一些概念,比如:开发阶段.真机阶段等. 在这一篇,我们回到 Res Kit 使用细节上. 在 Res Kit 的第一篇,我们介绍了 Res Kit 的基本使用,代码如下: using QF.Res; using QF.Extensions; using UnityEngine; namespace QF.Example { public class TestResKit : MonoBehaviour { void Awake ()…
在上一篇,介绍了 Res Kit 的基本使用,相信大家已经体会到了 Res Kit 的简便之处了. 在这一篇,我们试着探讨一下 Res Kit 的设计背后原理. AssetBundle 的不便之处 在使用 Res Kit 之前,相信大家多多少少接触过 AssetBundle. 有的童鞋可能是在项目中用过 AssetBundle,有的童鞋可能只是简单学习过 AssetBundle.总之,AssetBundle 在不通过 Res Kit 使用之前,总结下来就两个字:麻烦. AssetBundle 麻…
目前 QFramework 有两个可供安装的版本 PackageKit:QFramework 的插件平台,可以下载只感兴趣的插件,除了 Framework 模块还有一些 Shader 案例.项目模板.不依赖 Framework 的模块.教程.社区等功能和模块. Framework:包含了 PackageKit,以及 UI Kit.Res Kit 等内置模块,如果是想尝试使用 QFramework 的童鞋建议使用. 下载地址在:http://qf.liangxiegame.com/qf 本教程主要…
大家好,我是 QFramework 的作者 凉鞋,QFramework 从第一次代码提交到现在快 5 年了,期间陆陆续续增加了很多功能,在使用体验上做了大量的改进. 而市面上关于 QFramework 的资料却零零散散,所以 笔者 打算在此写一系列 QFramework 的使用教程. 而此教程,将收录于 QFramework 的官方文档,发布于 qf.liangxiegame.com. QFramework 简介 QFramework 是一套 快速开发 框架,适用于任何类型的游戏 及 应用项目.…
在上一篇,我们对 QFramework 的两个主要版本提供了介绍,并且写下了第一个 QFramework 脚本. 在这一篇,我们学习 QFramework 中几乎每个项目都要用到并且从中受益的功能:自动生成脚本并绑定,简称脚本生成. 我们先在场景中,随便创建一些有父子结构的 GameObject,如下所示: 它们都是空的节点,并没有什么真正的逻辑,只是为了展示一种通常的父子结构. 现在 GameRoot 里写了一个脚本,而脚本需要获取到 Player 的 GameObject. 我们一般会在 G…
我们花了四篇文章,介绍了 QF 中的脚本生成功能. 实际上 QF 中的脚本生成是有两种的,第一种就是我们现在学习的 ViewController + Bind 模式. 这种模式是为除 UGUI 以外的脚本生成提供的,也就是说如果是 游戏对象 或者是 NGUI.FGUI 还是 XXGUI,只要不是 UGUI,就推荐使用 ViewController + Bind 模式. 如果你的项目已经在用某个 UGUI 框架了,那么也推荐使用 ViewController + Bind 模式. 如果你在新项目用…
在上一篇,我们简单介绍了 ViewController 的嵌套实现. 在这一篇,我们学习 ViewController 脚本生成的最后一个功能,即:生成 Prefab. 实际上这个功能非常简单. 我们先看下 ViewController 的面板,如下图所示: Player 1 是,已经生成过脚本的 ViewController. 要想生成 Prefab,很简单,只需要把 生成 Prefab 勾上,并且把要生成的目录填好即可. 然后点击,生成代码,就能看到 Prefab 在目录中生成成功. 如下图…
在上一篇,我们学习了,脚本生成的基本使用. 在这一篇,我们试着深入,聊聊脚本生成给我们带来的便利. 脚本生成的便利 首先,我们要知道,在 Unity 的游戏世界中都是以 GameObject 为单位的,而 GameObject 是可以设置子 GameObject 的.所以,一般我们看到的 GameObject 都是呈树结构的. 而树结构,是一个比较好管理的结构,有层次的同时又有单向依赖关系. 在上一篇说到,在父节点获取子节点的对象,我们一般用 GameObject.Find 或 tranform…
原文:Knockout应用开发指南 第七章:Mapping插件 Mapping插件 Knockout设计成允许你使用任何JavaScript对象作为view model.必须view model的一些属性是observable的,你可以使用KO绑定他们到你的UI元素上,当这些observable值改变的时候,这些UI元素就会自动更新. 绝大多数程序都需要从服务器端获取数据,但是由于服务器不知道observable的概念是什么,它只支持简单的JavaScript对象(通常是序列化以后的JSON),…
解剖SQLSERVER 第七篇  OrcaMDF 特性概述(译) http://improve.dk/orcamdf-feature-recap/ 时间过得真快,这已经过了大概四个月了自从我最初介绍我的宠物项目OrcaMDF. 自从项目开始到现在,OrcaMDF发生了很多变化,功能更强了,因此我想提供一个概述对目前OrcaMDF的功能的概述以及我对OrcaMDF未来的计划 页面类型 OrcaMDF 当前支持以下页面的数据完整解析:Data, Index, TextMix(lob), TextTr…
转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为CoreOS支持的第一套应用程序隔离方案.本文将主要介绍在具体的场景下,如何在CoreOS中恰当地管理Docker容器. 注:本文首发于CSDN,转载请标明出处. [编者按]在“漫步云端:CoreOS实践指南”系列的前几篇文章中,ThoughtWorks的软件工程师林帆主要介绍了CoreOS及其相关…
检查动画 使用 Chrome DevTools 动画检查器检查和修改动画. 通过打开动画检查器捕捉动画.检查器会自动检测动画并将它们分类为多个组. 通过慢速播放.重播或查看动画源代码来检查动画. 通过更改动画时间.延迟.持续时间或关键帧偏移修改动画. 概览 Chrome DevTools 动画检查器有两个主要用途. 检查动画.您希望慢速播放.重播或检查动画组的源代码. 修改动画.您希望修改动画组的时间.延迟.持续时间或关键帧偏移. 当前不支持编辑贝塞尔曲线和关键帧. 动画检查器支持 CSS 动画…
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 安全 1.可以使用bind参数绑定一个地址,使redis只接受这个地址的连接. 2.使用requirepass参数,设置一个redis密码,使得每次客户端连接时都要发送密码,当执行复制时,如果主库设置了密码,需要在从库的配置文件通过masterauth参数设置主库的密码. 3.对命令重命名,只需要在配置文件中配置参数rename-command,格式为: 1 rename-command 原命令名称 新…
主要介绍一下数组方法 1.Join() Array.join()方法将数组中所有元素都转换为字符串并连接在一起,返回最后生成的字符串. 可以指定一个可选的字符串在生成的字符串中来分隔数组的各个元素.默认使用逗号. var a = [1, 2, 3]; var str = a.join(); // "1,2,3" str = a.join(" "); // "1 2 3" str = a.join(""); // "1…
目录(Catalogs)   MEF 特性编程模型的核心价值,拥有通过目录动态地发现部件的能力.目录允许应用程序轻松地使用那些通过 Export Attribute 注册自身的导出.下面列出 MEF 提供的目录.      程序集目录(Assembly Catalog)   为了发现给定程序集所有导出,需要使用 [System.ComponentModel.Composition.Hosting.AssemblyCatalog].   var catalog = new AssemblyCata…
解决办法一. #if defined(_WIN32) # ifndef GLUT_BUILDING_LIBextern _CRTIMP void __cdecl exit(int); 上面是glut.h中对exit的使用,意思是如果没有定义宏‍GLUT_BUILDING_LIB,就使用它的exit,那我们就在项目的属性——预处理器 里定义这个宏,这样就不执行glut.h中的exit了,而只执行stdlib.h中的exit.这样也就不会冲突了.对了,还要在附加依赖项里手动加上‍glut32.lib…
1.加电post自检    闪存查找ios 可随时从命令行进入设置模式,为此可在特权模式下输入setup    ctrl+c退出特权模式 6.2cli   命令行界面 进入cli router>   为用户exec模式 输入enable后  进入特权模式   router#    再输入disable 退出特权模式   再输入logout   退出控制台   6.2   路由器模式概述 全局修改     configure terminal    简写为config  t   影响整个路由环境…
问题1:根据源代码时,我发现的时候去敲门.不正确实施效果.哪里是不正确?没有源代码glPushAttrib(GL_LINE_STIPPLE) glPopAttrib().所以会出现最后的下一次抽奖提供的资料重绘每次更新的虚线时间前覆盖已制定好点线.和谈栈处理,这样子在刷帧重绘才不会影响其它帧的绘制结果.(原因是什么眼下我也不清楚,预计是状态机的管理问题.要了解内部的绘制机制才行. )可是每次手动加入压栈和弹栈太麻烦了,所以我处理C_style的宏定义形式去实现 问题2:reshape的操作屏蔽掉…
依赖注入 依赖注入(DI)是一种软件设计模式,处理组件如何获取其依赖关系. AngularJS注入器子系统负责创建组件,解析它们的依赖关系,并根据请求将它们提供给其他组件. 使用依赖注入 DI遍布AngularJS. 可以在定义组件或为模块提供运行和配置块时使用它. 诸如服务,指令,过滤器和动画之类的组件由注入工厂方法或构造函数定义. 这些组件可以注入"服务"和"值"组件作为依赖关系. 控制器由构造函数定义,可以使用任何"服务"和"值&…
Updating A Message Type - 更新消息类型 如果现有的消息类型不再满足您的所有需要(例如,您希望消息格式有一个额外的字段),但是您仍然希望使用用旧格式创建的代码,不要担心!在不破坏任何现有代码的情况下更新消息类型非常简单.记住以下规则: 不要更改任何现有字段的字段编号. 如果添加新字段,则使用"旧"消息格式的代码序列化的任何消息仍然可以由新生成的代码进行解析.您应该记住这些元素的默认值,以便新代码可以正确地与旧代码生成的消息交互.类似地,由新代码创建的消息也可以由…
第1章 汇编语言工具概述 TMS320C54x DSP的汇编语言开发工具包括: ■  Assembler      ■  Archiver      ■  Linker      ■  Absolute lister      ■  Cross-reference utility      ■  Hex conversion utility      ■  Mnemonic-to-algebraic translator utility 本章将概要介绍上述工具在软件开发流程中如何协调工作,并对每…
HTTP协议版本: 1.HTTP/0.9:HTTP的1991原型版本称为HTTP/0.9.这个协议有很多严重的缺陷,只应该用与与老客户端的交互.HTTP/0.9只支持GET方法,不支持多媒体内容的MIME类型,各种HTTP首部,或者版本号.HTTP/0.9定义的初衷是为了获取简单的HTML对象,它很快就被HTTP/1.0取代了. 2.HTTP/1.0:1.0是第一个得到广泛使用的HTTP版本.HTTP/1.0添加了版本号.各种HTTP首部,一些额外的方法,以及对多媒体对象的处理.HTTP/1.0…
经过一周的工作,v0.4 版本总算完成了. 就在刚刚笔者在 AssetStore 提交了 v0.4 版本. v0.4 版本主要内容有两个 一键生成简单继承类图功能 底层兼容 QFramework v0.14.x 其中一键生成类图功能的工作量不是很多,写功能加上提交版本前的测试和优化总共加起来不到 4 天. 但是底层兼容 QFramework v0.14.x 就花了很多时间. 先看看功能吧,一键生成简单继承类图的功能和上一篇开发日志的差不多. 这次不同的是,支持了中英文切换. 其他的功能和上一篇的…
约定 还记得上版本的第二十四篇的约定嘛?现在出来履行啦~ 为什么要重制? 之前写的专栏都是按照心情写的,在最初的时候笔者什么都不懂,而且文章的发布是按照很随性的一个顺序.结果就是说,大家都看完了,都还对框架没有一个感觉,感觉很乱.而现在,经过两年多的摸索,笔者已经对框架的体系有了一个了解,所以希望再版一次此系列的专栏. 为什么不在原来的文章里直接修改呢? 在上一轮的专栏第二十四篇里有讲过过:虽然以前的内容过时了,但是这些专栏对笔者有很重要的意义,它们记录了笔者成长的一个经历,在评论区有着大家的支…
UI Kit 快速入门 首先我们来进行 UI Kit 的快速入门 制作一个界面的,步骤如下: 准备 生成代码 逻辑编写 运行 1. 准备 先创建一个场景 TestUIHomePanel. 删除 Hierarchy 其他的 GameObject. 搜索 UIRoot.prefab,拖入 Hierarchy. 在 UIRoot / Design GameObject 下创建 Panel ( 右击 Design -> UI -> Panel ). 将该 Panel 改名为 UIHomePanel.…
http://learn.knockoutjs.com/  所有示例和代码都在在上面直接运行预览 注意:因为它用了google的cdn加速,所要要用代_理+_翻_墙才能正常加载 使用Knockout有一段时间了(确切的说从MIX11大会宣传该JavaScript类库以来,我们就在使用,目前已经在正式的asp.net MVC项目中使用),Knockout使用js代码达到双向绑定的目的,类似Silverlight/WPF里的绑定一样,我们主要就是利用相关的特性进行开发的,极大地减少了代码开发量. 关…
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等.你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行.一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应…
Ubuntu13.04配置完全指南(一)软件源 教育网推荐使用USTC软件源. 首先备份现有软件源: $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 打开/etc/apt/sources.list: $ sudo gedit /etc/apt/sources.list 添加以下内容: # ustc sources deb http://mirrors.ustc.edu.cn/ubuntu/ raring main restric…
Knockout应用开发指南 第一章:入门 2011-11-21 14:20 by 汤姆大叔, 20799 阅读, 17 评论, 收藏, 编辑 1    Knockout简介 (Introduction) Knockout是一个轻量级的UI类库,通过应用MVVM模式使JavaScript前端UI简单化. Knockout有如下4大重要概念: 声明式绑定 (Declarative Bindings):使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上. UI界面自动刷新 (Aut…