04 2014 档案
摘要:2014-05-04更新SqliteDatabase.cs这个文件的初始方法有问题,具体是如果指定URL已经存在了DB文件,就不会重新覆盖DB文件。这导致我们修改之后的DB文件无法产生效果。本人的解决办法是在游戏启动的界面,通过对比本地的Resources目录下的文件A,和玩家核心数据B里面的数据库...
阅读全文
摘要:对变量的草率使用,会导致程序的难以理解,原因是以下几点变量越多,就越难以全部跟踪他们的动向变量的作用域越大,就需要跟踪它的动向越久变量改变的越频繁,就越难以跟踪它的当前值。下面来讨论如何改善这些问题。1 减少变量仅当我们需要的时候,才使用变量,下面将列举出一些没必要存在的变量的。 1.1 没有价值的...
阅读全文
摘要:关键思想把你超长的表达式,拆分成更容易理解的小模块;使其不成为读者阅读上的“减速带”1 “解释型”变量拆分表达式最简单的方法是引入一个额外的变量,让它来表达一个小一点的子表达式。这个额外变量有时候被称作“解释”变量,因为它可以帮助解释子表达式的含义。来个判断用户名称的例子BAD ...
阅读全文
摘要:You can add the following functions to your scripts placed on widgets or in-game objects with a collider, provided they are drawn with a camera that h...
阅读全文
摘要:如果代码中没有条件判断、循环或者其他控制流程的语句,那么它的可读性会变得很好。而加入跳转和分支等控制流转部分会降低代码的可读性。本章主要从代码的控制流转部分入手,来讨论如何让其变得可读。把代码的控制流转部分修改的越自然越好,使得读者不用停下来,回头重读代码。1 判断时:变量放左,常量放右我们询问一个...
阅读全文
摘要:快速修复 alt+enter(alt+enter唤出快速修复面板,上下方向键进行选择,再次敲击enter键确定修改)跳转到对象声明 ctl+鼠标左键 重构-重命名(ctl+r+r) esc键退出快速定位到文件夹 ctl+shift+t查看对象引用频率 shift+f12查看文件结构 ctl+a...
阅读全文
摘要:先说明,以下情况只针对本人哦~前阵子我在OSX的最新版本Mavericks下做Unity开发,后来我把MacbookPro卖了,自己组装了个PC搞开发,为啥呢?1:OSX下 MonoDevelop这个脚本IDE非常的不友好,无法输入中文(可以复制黏贴中文)2:个人更习惯VisualStudio环境下...
阅读全文
摘要:什么是言简意赅?年轻的时候,我们很多时候因为紧张,导致语无伦次,话说了很多,但是别人不知道你在瞎BB啥。所以要经常写博客哟~可以锻炼我们对语言提炼的能力言简意赅可以分为两个部分言简:尽量凝炼语言,减少注释在屏幕上的空间占用。意赅:如果你要写注释,就要明确你所要表达的意思。以下是一些针对“言简意赅的注...
阅读全文
摘要:本章旨在帮助各位读者们去了解应该写什么样子的注释,你可能以为注释的目的就是解释代码做了什么,没错,但这只是其中一部分。注释的目的尽量传递信息给读者,使其对代码的熟悉程度和作者一致。当你写代码的时候,脑海里有很多有价值的信息,你没有选择记录下来;当其他人阅读你的代码的时候,这些信息就丢失了---它们看...
阅读全文
摘要:好的代码应该看起来养眼,确切来说,有以下三条原则:使用一致的风格,使读者很快就习惯这种风格让相似的代码看上去相似把相关代码进行分组,形成代码块秀外与慧中在本章中,我们只关注可以改进代码的简单“审美”方法,这些表面上的改动,我们称之为“外功”-简单的改变,就能大幅提高阅读性而架构上的重构,我们称之为“...
阅读全文
摘要:前面一篇我们讲了把信息塞到到名字中,现在本章关注命名另外一个陷阱:歧义!在命名的时候,扪心自问,这样的命名会引起歧义吗?1:避免容易引起歧义的单词People.Filter("year=CART_CAPCITY_LIMIT) Debug.Log("cart full")你能一阵见血的看出代码问题出...
阅读全文
摘要:把命名当成是一种注释的方式!一个合适的名字,可以让它承载你要传递的信息。我们可以将其应用到变量、方法、类、接口、文件名等地方。1:命名精准,避免泛泛想想看你的代码中有这些词语吗?temp、item、data、result...这些都是泛泛的词语,我们完全可以结合上下文来赋予更加具体的值,比如resu...
阅读全文
摘要:@简介:1,Resharper提供以下6个核心功能,分别是:(1).代码分析(CodeAnalysis):智能提示代码中存在的问题和修复建议。(2).编码助手(CodingAssistance):智能提示自动完成功能。 (3).代码生成(CodeGeneration):自动生成属性,构造函数,实现接...
阅读全文
摘要:什么是FingerGestures?FingerGestures是Unity上,非常热门的一款用于处理用户输入的插件为什么要使用FingerGestures?1:它统一了鼠标点击和用户触摸的输入模型。使得我们可以在UnityEditor里面就可以方便地进行触摸测试(而不必发布到机器上)2:它提供了丰富的触摸、手势事件支持3:使用符合KISS原则,不需要复杂的配置,即可实现功能4:这个吊了:允许用户自定义手势触发图案(无尽之剑的手势触发技能,用它轻松实现)相信你已经迫不及待开始这段传奇之旅了。下面通过一个简单Tap(点击)事件的例子:触摸屏幕上的物体,输出碰撞的物体名称和碰撞点;OK,让我们开始
阅读全文
摘要:1. 每天在固定时间起床,并且越早越好 如果早起对你来说很难,那就先比目前早起 5 分钟。习惯这个时间后,再提前 5 分钟,逐渐达到你的目标。 2. 每天起床后做同一件事 听起来也许没那么重要,但事实上,这样有助于你开始结构化的生活轨迹,从每天的第一件事开始。 3. 吃早餐 绝对重要。 4. 先做一天中最重要的事 这可绝不是收邮件刷新闻,如果你最佳精力是在早上的话,那就用早上的时间来写代码、设计、解决已拖延的问题。你的注意力会随着时间慢慢消散,在下午再做一些不那么费脑子的事儿。 5. 将你的时间分为1-2 小时的小块 注意力高度保持一天是不可能的,尤其是创造性活动。将一天...
阅读全文
摘要:当我们需要检测两个物体A和B发生碰撞的时候,必须要满足一下条件1:A和B必须有碰撞边界,你可以点开一个A,在属性窗口点击AddComponent,在physis(物理)目录下看到以下这些,根据形状选择一个就好了2:碰撞的发起者需要添加RigidBody(就是俗称刚体),将Is Kinematic设置为True,告诉Unity,这个物体的碰撞行为我来负责,不用你物理引擎操心了。3:为了碰撞脚本OnTriggerEnter可以侦测到碰撞行为,需要将IsTrigger设置为true,这就告诉Unity,这个物体的碰撞行为我来负责,不用你物理引擎操心了。发起者和接受者其中设置一个就可以了,你也可以根据
阅读全文
摘要:Buff在游戏中无处不在,比如WOW、DOTA、LOL等等,这些精心设计的BUFF,让我们击节赞叹,沉迷其中。问:BUFF的本质是什么?BUFF 是对一项或多项数据进行瞬间或持续作用的集合。(持续的改变对象某些属性的效果)问:设计BUFF的要点有哪些?1:有用还是有害:也就是我们常说的BUFF/DE...
阅读全文
摘要:一般我们处理随机率,使用Random.Range(MIN,MAX),如果返回值在我们设定的范围内,则随机命中成功。打个比方:牛魔王掉裁决的概率为0.1%,也就是说,搞死牛魔王1000次(默哀),会掉一把裁决。我们来模拟下,10组玩家击杀牛魔王1000次的结果:可以看出,大部分结果还是比较真实的反应了概率,但是值得注意的是第6组打了1000次,还是没有出裁决,这玩家肯定要骂娘了,为什么?还是思想“不患寡而患不均”在作祟,“你承诺了千分之一掉宝率,为什么我起早摸黑打下来毛都没有,第三组爆了三把?”同样的,比如镶嵌宝石成功率为20%,也就是理论上5次成功一次,那么镶嵌5次全部失败的概率是多少?0.8
阅读全文
摘要:“游戏虐我千百遍,我待游戏如初恋”,这是不可能的,当以下情况一再挑战玩家的底线时,或许,是时候卸载了吧:1:游戏试玩5分钟就可以很清楚游戏的玩法,这样的游戏会被认为毫无可玩的价值而被抛弃,比如长大后我们不玩儿时的《斗兽棋》一样:“太简单了!图样图森破”2:发现在游戏里面要达到高级阶段,需要一大堆东西,但是这些东西我不感兴趣。而当前环境下,“这一大堆东西”往往就是发行商赤裸裸的金币充值:“前段时间玩了个传奇SF,土城围了一圈传送NPC,高等级打宝地图,每秒消耗XX元宝”3:游戏太难了,玩了5分钟,被虐5分钟,挫折感在我心中翻滚:“买表啊,到底是我玩游戏还是游戏玩我?我真是太蠢了!”。但是现在受虐
阅读全文
摘要:Random.Range() 该函数有两个重载,分别是 float和int的,这两者还是有差别的,具体是: float型,随机值涵盖: 最小和最大值 Random.Range(0f,1f) 是有可能返回0、1的int型,随机值涵盖:最小值,不涵盖最大值Random.Range(0,1)返回结果永远是0!
阅读全文
摘要:在unity中,我们可能需要更换怪物的贴图,来达到以下效果方法1:手动配置找到自己配置好的扩展名为.mat的文件,在怪物的节点找到带Mesh Render的子元素,将其拖放到如图位置方法2:代码创建法材质的创建,需要赋值两个重要的元素,一个是shader,另一个是贴图Material mat = new Material(Shader.Find("Sprite/Vertex Colored, Fast")); mat.SetTexture("_MainTex", Resources.Load("贴图的路径") as Texture2D
阅读全文