摘要:
在Unity中,通常通过脚本为GameObject添加额外的属性。具体有2种方式:一种是通过硬编码为脚本字段赋值,另一种是通过反射在运行时给脚本字段赋值。 脚本通过字段硬编码为GameObject添加额外的属性 创建一个空的GameObject。 点击"Hierarchy"窗口下的GameObject,看到如下的"Inspector"窗口。 现在我们要为这个GameObject增...
阅读全文
posted @ 2015-06-19 17:24
Darren Ji
阅读(3200)
推荐(0)
摘要:
Unity3D脚本生命周期是指从脚本的最初唤醒到脚本最终销毁的整个过程。生命周期的各个方法被封装到了MonoBehaviour类中。具体来说如下: 1、In Editor Mode 编辑模式 当在编辑器中把脚本绑定到某个GameObject的时候,调用了MonoBehaviour类的Reset方法。 2、Startup 开始运行阶段 如果脚本所绑定的GameObject是存在的...
阅读全文
posted @ 2015-06-19 11:35
Darren Ji
阅读(779)
推荐(0)
摘要:
在Unity3D中,只有把脚本赋予Scene中的GameObject,脚本才会得以执行。 添加Camera类型的GameObject。 Unity3D默认使用"MonoDevelop"编辑器,这里,我想使用Visual Studio作为编辑器。 依次点击"Edit","Preferences","External Tools",在"External Script Editor"项下...
阅读全文
posted @ 2015-06-19 10:20
Darren Ji
阅读(1011)
推荐(0)
摘要:
删除"Hierarchy"窗口中的"Directional Light"。 把鼠标放在"Scene"窗口,滑动鼠标滚轮,可以对"Scene"窗口进行缩放。 把鼠标放在"Scene"窗口,按住alt键,按住鼠标左键,可以对"Scene"窗口进行角度调整。 点击"Hierarchy"窗口中的"Main Camera","Secne"窗口中的Camera处于选中状态。 在软件左上角提...
阅读全文
posted @ 2015-06-18 11:01
Darren Ji
阅读(955)
推荐(0)
摘要:
下载并安装Unity5软件客户端。 打开软件,注册Unity帐号,并用注册帐号登录。 点击"创建Project"按钮。 把项目命名为"My First Unity Project"。 点击左下方的"Assert packages"按钮,点击"select all"文字,点击"Done"按钮,点击"Create project"按钮。 创建完毕,多了一个与项目名称同名的文件夹...
阅读全文
posted @ 2015-06-18 08:04
Darren Ji
阅读(588)
推荐(0)
摘要:
网页浏览Unity3D制作的效果时,出现提示"安装unity web player"。解决办法如下: →在浏览器中输入:chrome://flags/#enable-npapi 在NPAPI中,点击"启用"。在Native Client中,点击"启用"。 →在浏览器中输入:chrome://restart →依然出现提示:unity failed to download da...
阅读全文
posted @ 2015-06-16 17:04
Darren Ji
阅读(888)
推荐(0)
摘要:
如何高效地进行数组复制?如果把一个变量值复制给另外一个数组变量,那么2个变量指向托管堆上同一个引用。如果想在托管堆上创建另外的一份数组实例,通常使用Array.Copy方法。class Program{static void Main(string[] args){int[] a = {1, 3, ...
阅读全文
posted @ 2015-05-29 17:29
Darren Ji
阅读(13289)
推荐(2)
摘要:
在开发多语言网站时,我们可以为某种语言创建一个资源文件,根据浏览器所设置的不同语言偏好,让运行时选择具体使用哪个资源文件。资源文件在生成程序集的时候被嵌入到程序集。 本篇体验,在ASP.NET MVC中实现全球化和本地化,比如,当浏览器选择英文,就让某些页面元素显示英文;当浏览器选择用中文浏览,则显示中文。 使用Visual Studio 2013创建一个无身份验证的MVC项目。 ...
阅读全文
posted @ 2015-05-28 10:16
Darren Ji
阅读(2397)
推荐(2)
摘要:
本篇体验除Queue和Stack之外的其它泛型集合。 SortedList SortedList和List比较相似,不同的地方在于SortedList集合元素是排过序的,往SortedList集合添加元素的时候需要添加键值对数据。在添加集合元素的时候,首先采用"二分查找算法"找到合适的位置,然后元素被放到该位置,该位置后面所有的集合元素整体后退一位。 static v...
阅读全文
posted @ 2015-05-24 14:51
Darren Ji
阅读(1699)
推荐(0)
摘要:
本篇体验使用C#的泛型队列Queue实现生产消费模式。 如果把生产消费想像成自动流水生产线的话,生产就是流水线的物料,消费就是某种设备对物料进行加工的行为,流水线就是队列。 现在,要写一个体现生产消费模式的泛型帮助类,比如叫ProducerConsumer。 该类肯定会维护一个有关生产、物料的Queue类型的字段,还存在一个有关消费、Action类型的字段。 在Producer...
阅读全文
posted @ 2015-05-23 09:11
Darren Ji
阅读(6008)
推荐(2)
摘要:
.Net为我们提供了众多的泛型集合。比如,Stack先进后出,Queue先进先出,List集合元素可排序,支持索引,LinkedList,双向链表的泛型实现,不支持索引;ISet不允许被复制,他有2个实现,一个是HashSet,不维持集合元素的排序,另一个是SortedSet,支持集合元素的排序;IDictionary是一个字典集合的泛型接口,SortedList实现了IDictionary,...
阅读全文
posted @ 2015-05-22 23:26
Darren Ji
阅读(3978)
推荐(1)
摘要:
当有一组数据需要存放,到底是使用T[]呢,还是选择List呢? 先来看数组。 所有的数组类型都隐式地从System.Array这个抽象类派生,而System.Array又派生自System.Object。也就是说数组是引用类型。通过如下方式创建数组: int[] arrInt = new int[10]; 以上,在托管堆上分配了可以容纳10个未装箱int对象所需要的内存块(这个内存...
阅读全文
posted @ 2015-05-22 14:52
Darren Ji
阅读(1938)
推荐(0)
摘要:
通常,我们使用try/catch/finally语句块来捕获异常,就像在这里说的。在抛出异常的时候,使用throw和throw ex有什么区别呢? 假设,按如下的方式调用几个方法: →在Main方法中调用Method1方法,try/catch捕获异常→在Method1方法中调用Method2方法,try/catch捕获异常→在Method2方法中故意抛出异常,try/catch捕获异常 ...
阅读全文
posted @ 2015-05-22 11:34
Darren Ji
阅读(20583)
推荐(0)
摘要:
在Visual Studio 2012中,默认使用Microsoft自带的MS-Test测试框架。但,Visual Studio同样允许使用第三方测试框架,比如NUnit,xUnit,MbUnit,等等。本篇体验使用NUnit进行单元测试。 在Visual Studio中创建一个解决方案。 在解决方案下添加一个名称为"LogAn"的类库。 创建名称为LogAnalyzer的类,编写如下...
阅读全文
posted @ 2015-05-21 12:11
Darren Ji
阅读(1557)
推荐(0)
摘要:
有这样一个有关汽车的类。 public class Car { public int ID { get; set; } public string Make { get; set; } } 现在,在客户端创建一个Car的集合实例,再遍历。 static void Main(string[] args) ...
阅读全文
posted @ 2015-05-20 15:50
Darren Ji
阅读(1291)
推荐(1)
摘要:
关于协变逆变,SolidMango的解释是比较可取的。有了协变,比如,在需要返回IEnumerable类型的时候,可以使用IEnmerable来替代;有了逆变,比如,在需要接收IComparable类型形参方法中,可以使用IComparable类型实参来替代。 协变 先来体会协变。有2个具有继承关系的父类和子类。 public class Animal { ...
阅读全文
posted @ 2015-05-20 15:03
Darren Ji
阅读(823)
推荐(0)
摘要:
登录Windows Azure门户,点击"所有项目"中的网站名称。 点击"配置"。 在"远程调试"选项中选择"打开",在"远程调试VISUAL STUDIO版本"中选择"2012"。 点击下方的"保存"按钮。 来到VS2012项目中,在程序中打上断点。 右键项目,点击"发布",在"配置"中选择"Debug",点击"发布"按钮。 在Visual Studio 2012中点...
阅读全文
posted @ 2015-05-15 23:08
Darren Ji
阅读(339)
推荐(0)
摘要:
struct对象可能被分配在托管堆上吗? --会的。 比如当对struct装箱的时候,就会被分配在托管堆上。 比如,让一个struct实现一个接口。 public interface IReport { string Name { get; } } public struct Score : IReport { ...
阅读全文
posted @ 2015-05-14 23:03
Darren Ji
阅读(725)
推荐(0)
摘要:
如果实例为null,调用实例方法会报如上错。 解决办法: 检查实例是否为null,考虑什么情况下实例为null,然后排除实例为null的情况。
阅读全文
posted @ 2015-05-04 22:19
Darren Ji
阅读(1941)
推荐(0)
摘要:
某表的某个字段作为另一个表的FOREIGN KEY,在truncate另外一个表后,再truncate某表,就报如上的错。 解决方法: → 删除另外一个表的外键 IF OBJECT_ID(N'[dbo].[外键]', 'F') IS NOT NULL ALTER TABLE [dbo].[另外一个表] DROP CONSTRAINT [外键];
GO → truncate...
阅读全文
posted @ 2015-05-03 17:06
Darren Ji
阅读(9874)
推荐(0)
摘要:
struct是值类型,隐式继承自System.ValueType,struct实例被分配在堆栈上,由系统内存回收;class是引用类型,class的实例被分配在托管堆上,由GC回收。 struct不可以有无参构造函数(这种说法不准确,ChuckLu 提醒应说成:不能包含显式的无参构造函数。也就是说,struct有默认的无参构造函数,不能显式声明),只能有带参构造函数;class当然可以有无...
阅读全文
posted @ 2015-04-30 08:47
Darren Ji
阅读(923)
推荐(0)
摘要:
在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现。本篇使用多种方式实现两个变量值的交换。 假设int x =1; int y = 2;现在交换两个变量的值。 使用临时变量实现 static void Main(string[] args) { int x = 1; ...
阅读全文
posted @ 2015-04-29 08:21
Darren Ji
阅读(13337)
推荐(3)
摘要:
什么是.NET? 起源:比尔盖茨在2000年的Professional Developers Conference介绍了一个崭新的平台叫作Next Generation Windows Service,也就是后来的.NET。 软件层:.NET可以被看作是介于操作系统和编程语言之间的软件层,它可以支持多种编程语言,包括C#,VB.NET,C++,F#,等等。 用来产生托管代码的框架、平台:传...
阅读全文
posted @ 2015-04-27 23:51
Darren Ji
阅读(1767)
推荐(1)
摘要:
标题可能无法表达我的本意。比如,有这样一个枚举: public enum MyChoice { MyFirstChoice = 0, MySecondChoice =1, MyThirdChoice = 2 } 数据库中,某表某字段保存值为"0,1,2",在显示的时候,我们希望是"第一个选择,第二个选择,第三个选择"...
阅读全文
posted @ 2015-04-26 09:30
Darren Ji
阅读(4364)
推荐(0)
摘要:
Jeffrey Zhao真是神一样的存在,伊太结棍了(上海话),每次看他的博客得使劲使劲使劲地啃。本篇源于Jeffery Zhao的"逆泛型执行器"这篇文章。该文提到了为以下的接口写一个泛型方法: public interface IRecord { string GetString(string field); int GetInt(stri...
阅读全文
posted @ 2015-04-25 09:29
Darren Ji
阅读(3318)
推荐(1)
摘要:
报错:System.NotSupportedException: LINQ to Entities does not recognize the method ...... get_Item(Int32)' method, and this method cannot be translated into a store expression. 在控制器中有如下一段代码: var tem...
阅读全文
posted @ 2015-04-24 15:21
Darren Ji
阅读(3545)
推荐(0)
摘要:
我们经常通过泛型构造函数创建泛型实例,也常调用实例的扩展方法。以下的代码在项目中随处可见: static void Main(string[] args) { var strs = new List {"hello","world"}; var result = strs.Where(s => s.StartsW...
阅读全文
posted @ 2015-04-24 10:54
Darren Ji
阅读(620)
推荐(0)
摘要:
以前发短信使用过短信猫,现在,更多地是使用第三方API。大致过程是: → 用户在页面输入手机号码→ 用户点击"获取验证码"按钮,把手机号码发送给服务端,服务端产生几位数的随机码,并保存在某个地方(Session, Applicaiton, 数据库, 等等),调用第三方的API→ 第三方发送几位数的随机码至用户手机→ 用户在页面输入接收到的随机码→ 把随机码等发送给服务端,与服务端保存的随机...
阅读全文
posted @ 2015-04-23 10:48
Darren Ji
阅读(9350)
推荐(6)
摘要:
在ASP.NET MVC的控制器中可以实现Session处理。如果要在前端视图页实现Session该如何做呢?可以使用window.sessionStorage来做。 AlexChittock用jQuery做了实现。在这里: https://github.com/AlexChittock/JQuery-Session-Plugin 具体实现很简单: @{ ViewBag.Title ...
阅读全文
posted @ 2015-04-22 22:52
Darren Ji
阅读(4122)
推荐(0)
摘要:
有时候,当用户请求一个Controller下的Action,我们希望,在单位时间间隔内,比如每秒,每分钟,每小时,每天,每星期,限制同一个IP地址对某个Action的请求次数。如何做呢? stefanprodan的MvcThrottle能很好地解决这个问题,以及其它类型的IP限制问题。在这里:https://github.com/stefanprodan/MvcThrottle 把项目从G...
阅读全文
posted @ 2015-04-22 10:55
Darren Ji
阅读(6979)
推荐(5)
摘要:
本篇体验在ASP.NET MVC中使用ASP.NET Identity增删改查用户。 源码在这里:https://github.com/darrenji/UseIdentityCRUDUserInMVC 在VS2013中创建一个MVC项目,用默认的"无身份验证"作为身份验证机制。 通过控制台下载Bootstrap。 Install-Package -version 3.0.3 bo...
阅读全文
posted @ 2015-04-21 15:15
Darren Ji
阅读(3178)
推荐(3)
摘要:
早在2005年的时候,微软随着ASP.NET 推出了membership机制,十年磨一剑,如今的ASP.NET Identity是否足够强大,一起来体会。 在VS2013下新建项目,选择"ASP.NET Web应用程序。",点击"确定"。 选择"MVC"模版。 创建的网站包括三个核心组件: 1、Microsoft.AspNet.Identity.EntityFramework 这是基于...
阅读全文
posted @ 2015-04-20 23:41
Darren Ji
阅读(1320)
推荐(4)
摘要:
在前一篇中,了解了Task的基本用法 如果一个方法返回Task,Task,如何获取Task的返回值,获取值的过程会阻塞线程吗? static void Main(string[] args) { var result = DoWorkAsync().Result; Console.WriteLine(result);...
阅读全文
posted @ 2015-04-19 10:25
Darren Ji
阅读(461)
推荐(0)
摘要:
当我们调用第三方的Web API服务的时候,不一定每次都是成功的。这时候,我们可能会再多尝试几次,也有可能延迟一段时间再去尝试调用服务。 Task的静态方法Delay允许我们延迟执行某个Task,此方法可以让我们做到延迟一段时间再去调用服务;多尝试几次调用如何实现呢?可以用循环遍历。 在"使用HttpClient对ASP.NET Web API服务实现增删改查"中,创建了一个ASP.NET...
阅读全文
posted @ 2015-04-19 00:29
Darren Ji
阅读(1985)
推荐(0)
摘要:
本篇体验使用HttpClient对ASP.NET Web API服务实现增删改查。 创建ASP.NET Web API项目 新建项目,选择"ASP.NET MVC 4 Web应用程序"。 选择"Web API"。 在Models文件夹下创建Product类。 public class Product { public int Id { get; set...
阅读全文
posted @ 2015-04-18 16:55
Darren Ji
阅读(2432)
推荐(1)
摘要:
本篇体验使用HttpClient消费ASP.NET Web API服务,例子比较简单。 依次点击"文件","新建","项目"。 选择"ASP.NET Web API"项目。 在Models文件夹下创建Person.cs类。 public class Person { public int Id { get; set; } public ...
阅读全文
posted @ 2015-04-18 12:22
Darren Ji
阅读(1194)
推荐(0)
摘要:
在没有使用异步Action之前,在Action内,比如有如下的写法: public ActionResult Index()
{ CustomerHelper cHelper = new CustomerHelper(); List result = cHelper.GetCustomerData(); return View(result);
} 以上,假设,Get...
阅读全文
posted @ 2015-04-18 09:38
Darren Ji
阅读(6735)
推荐(6)
摘要:
我们知道,每个应用程序就是一个进程,一个进程有多个线程。Task Parallel Library为我们的异步编程、多线程编程提供了强有力的支持,它允许一个主线程运行的同时,另外的一些线程或Task也同时运行。本篇体验基本用法。 基本用法 Taks的构造函数接收的类型是Action,也就是一个委托。 static void Main(string[] args) ...
阅读全文
posted @ 2015-04-17 23:56
Darren Ji
阅读(893)
推荐(0)
摘要:
在ASP.NET MVC中,ModelState中包含了验证失败的错误信息,具体被存储在ModelState.Values[i].Errors[j].ErrorMessage属性中。当然,通过打断点,单步调试可以查看具体的验证失败错误信息,但有时候希望把ModelState中的验证失败信息遍历显示出来。 ModelState类型是ModelStateDictionary,ModelStateD...
阅读全文
posted @ 2015-04-10 22:51
Darren Ji
阅读(2949)
推荐(0)
摘要:
从ASP.NET MVC 5开始,Html.DropDownListFor已经提供了对Enum的支持,但在这以前,需要通过帮助方法或扩展方法来让Html.DropDownListFor显示枚举值。 本篇解决在ASP.NET MVC 4 下Html.DropDownListFor显示默认项的问题。 以上,使用Select是通过Html.DropDownListFor来实现的,Selec...
阅读全文
posted @ 2015-04-10 10:12
Darren Ji
阅读(2621)
推荐(0)