在平时开发游戏过程中,遇到一些编写代码很繁琐的问题. 我发现我团队中每个人都会遇到,就算打写出来分享下经验.

条件断点

利用IDE提供的工具, 右键断点的时候 输入条件, 当条件达成的时候,断点才能命中. (以前不知道这个功能总是要关闭游戏->编写代码-> 重新运行游戏 –> 查看结果 这个流程非常麻烦)

class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 100; i++)
{
if (i == 50) //利用条件断点,不写代码情况下 断点到某一个条件
{
Console.WriteLine("我断点到了");
}
}
Console.ReadKey();
}
}

运行表达式

你在想在某一个时段运行xxx代码, 可以通过以下方式. 选择某一个变量右键-> 快速监视

利用反射更好的编写测试代码

在我编写代码的时候,需要编写一些测试工具方便调试游戏,  但是在编写一些测试代码的时候,  总是为了方便,快速不小心破坏了代码的原有结构, 比如一个字段private 为了快速的访问到 就改成public.  我写了阶段简单实用的代码

public static class RefStatic
{ public static FieldInfo RefFieldVal(this object t, string name)
{
FieldInfo info = t.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
return info;
} public static FieldInfo RefStaticFieldVal(this object t, string name)
{
FieldInfo info = t.GetType().GetField(name, BindingFlags.Static | BindingFlags.NonPublic);
return info;
} public static FieldInfo RefSetFieldVal(this object t, string name, object val)
{
FieldInfo info = t.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
if (info != null)
info.SetValue(t, val); return info;
} public static FieldInfo RefSetStaticFieldVal(this object t, string name, object val)
{
FieldInfo info = t.GetType().GetField(name, BindingFlags.Static | BindingFlags.NonPublic);
if (info != null)
info.SetValue(t, val); return info;
} public static PropertyInfo RefSetPropertyVal(this object t, string name, object val)
{
PropertyInfo info = t.GetType().GetProperty(name);
if (info != null)
info.SetValue(t, val, null); return info;
} public static MethodInfo RefExecuteMethod(this object t, string name, object[] parameters)
{
MethodInfo info = t.GetType().GetMethod(name, BindingFlags.NonPublic | BindingFlags.Instance);
if (info != null)
info.Invoke(t, parameters); return info;
}
}

使用的栗子:

if (GUILayout.Button("生成全部单元格"))
{
var bag = (Panel_CommonBag)target;
GameObject[] go = (GameObject[])bag.RefFieldVal("m_CellList").GetValue(bag);
for (int i = 0; i < go.Length; i++)
{
KnapsackColumn k = go[i].GetComponent<KnapsackColumn>();
k.CreateCell();
}
}

Unity 开发游戏编写代码的技巧的更多相关文章

  1. Unity 开发游戏Game分辨率设置

    最近自己开发小游戏,突然又被Game视图中设置分辨率被诱惑了, 我到底该怎么设置分辨率设置的图片才能让电脑和手机尺寸显示的大小一模一样呢? 然后又被手机尺寸和分辨率迷惑了! =.= 越搞越混   分辨 ...

  2. Unity开发游戏 flapybird 无广告老马版分享

    Flapybird确实是一款非常好玩的游戏,但是上手难度比较大.经过老马模仿加工,把游戏难度降低,而且不加入任何广告. 特此分享.下载地址:http://files.cnblogs.com/fly_d ...

  3. 【项目实例】android开发游戏音效代码实例

    //音效的音量 int streamVolume; //定义SoundPool 对象 private SoundPool soundPool; //定义HASH表 private HashMap< ...

  4. 使用unity开发游戏时如觉得游戏声音太吵,点Mute Audio

    mute静音

  5. VS开发中的代码编写小技巧——避免重复代码编写的几种方法

    上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中, ...

  6. 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下

    写在前面的 其实这个名字起得不太欠当,Unity本身是很强大的工具,可以部署到很多个平台,而不仅仅是可以开发Windows Phone上的游戏. 只不过本人是Windows Phone 应用开发出身, ...

  7. Unity MMORPG游戏开发教程(一)——初识Unity

    五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以C#为介绍语言,基于Unity2017.4.x. 一.环境搭建 我使用的是Unity+VSCode,用的是mac系统,windows的自己 ...

  8. 使用 Unity 3D 开发游戏的架构设计难点

    Unity 3D 引擎对于开发者来说,入手非常快,因为它采用的是 C# 作为开发语言,这也大大降低了开发者的门槛.但凡只要懂一门编程语言的人都能使用 Unity 3D 引擎开发,另外 Unity 3D ...

  9. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

随机推荐

  1. mCustomScrollbar动态加载滚动条

    生成html代码之前: $(".main_body_con").mCustomScrollbar("destroy"); html添加到页面之后: $(&quo ...

  2. Bomb Enemy -- LeetCode

    Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return ...

  3. [BZOJ4819][SDOI2017]新生舞会(分数规划+费用流,KM)

    4819: [Sdoi2017]新生舞会 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1097  Solved: 566[Submit][Statu ...

  4. BZOJ 3790 神奇项链(manacher+DP+树状数组)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3790 [题目大意] 问最少用几个回文串可以构成给出串,重叠部分可以合并 [题解] 我们 ...

  5. 【深度优先搜索】mr353-取奶

    应该是USACO的题目,暂时没有找到对应出处. [题目大意] 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位——译者注) 他的最好的牛奶,并把它装 ...

  6. JVM命令-java服务器故障排查

    一.top(Linux命令) 执行top命令:    (查看进程15477的详细情况,下文用到) 系统信息(前五行): 第1行:Top 任务队列信息(系统运行状态及平均负载),与uptime命令结果相 ...

  7. 浅析position:relative position:absolute

    定位一直是WEB标准应用中的难点,如果理不清楚定位那么可能应实现的效果实现不了,实现了的效果可能会走样.如果理清了定位的原理,那定位会让网页实现的更加完美. 定位的定义: 在CSS中关于定位的内容是: ...

  8. [转]Java中子类调用父类构造方法的问题分析

    在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下:    当你new一个子类对象的时候,必须首先要new一个 ...

  9. Oracle Linux logoOracle Linux

    http://www.oschina.net/p/oracle_enterprise_linux

  10. [典型漏洞分享]YS忘记密码机制设计存在缺陷,导致任意用户口令均可被修改【高】

    记录了安全测试过程中发现的一些典型的安全问题 YS忘记密码机制存在缺陷,可导致任意用户口令被修改[高] 问题描述: YS网站提供用户密码修改功能,当用户忘记密码时可通过该功能找回密码,但该修改密码的流 ...