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

条件断点

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

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. for (int i = 0; i < 100; i++)
  6. {
  7. if (i == 50) //利用条件断点,不写代码情况下 断点到某一个条件
  8. {
  9. Console.WriteLine("我断点到了");
  10. }
  11. }
  12. Console.ReadKey();
  13. }
  14. }

运行表达式

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

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

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

  1. public static class RefStatic
  2. {
  3.  
  4. public static FieldInfo RefFieldVal(this object t, string name)
  5. {
  6. FieldInfo info = t.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
  7. return info;
  8. }
  9.  
  10. public static FieldInfo RefStaticFieldVal(this object t, string name)
  11. {
  12. FieldInfo info = t.GetType().GetField(name, BindingFlags.Static | BindingFlags.NonPublic);
  13. return info;
  14. }
  15.  
  16. public static FieldInfo RefSetFieldVal(this object t, string name, object val)
  17. {
  18. FieldInfo info = t.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
  19. if (info != null)
  20. info.SetValue(t, val);
  21.  
  22. return info;
  23. }
  24.  
  25. public static FieldInfo RefSetStaticFieldVal(this object t, string name, object val)
  26. {
  27. FieldInfo info = t.GetType().GetField(name, BindingFlags.Static | BindingFlags.NonPublic);
  28. if (info != null)
  29. info.SetValue(t, val);
  30.  
  31. return info;
  32. }
  33.  
  34. public static PropertyInfo RefSetPropertyVal(this object t, string name, object val)
  35. {
  36. PropertyInfo info = t.GetType().GetProperty(name);
  37. if (info != null)
  38. info.SetValue(t, val, null);
  39.  
  40. return info;
  41. }
  42.  
  43. public static MethodInfo RefExecuteMethod(this object t, string name, object[] parameters)
  44. {
  45. MethodInfo info = t.GetType().GetMethod(name, BindingFlags.NonPublic | BindingFlags.Instance);
  46. if (info != null)
  47. info.Invoke(t, parameters);
  48.  
  49. return info;
  50. }
  51. }

使用的栗子:

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

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. 1.1(SQL学习笔记)SQL基础

    一.SELECT 建表及数据填充语句下载:链接: https://pan.baidu.com/s/1WHYafwqKJEKq1kDwCH_Zlg 提取码: 3wy4 SELECT用于指定检索返回的结果 ...

  2. Codeforces Gym 100269D Dwarf Tower spfa

    Dwarf Tower 题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a ...

  3. 基于tiny4412的Linux内核移植 -- PWM子系统学习(八)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  4. 《Go语言实战》笔记之第三章 ----包

    原文地址: http://www.niu12.com/article/10 ####包 所有的.go 文件,除了空行和注释,都应该在第一行声明自己所属的包. 每个包都在一个单独的目录里. 不能把多个包 ...

  5. sonar如何添加自定义JAVA规则

    参考: 1.https://segmentfault.com/a/1190000008659108 2.https://docs.sonarqube.org/display/DEV/Adding+Co ...

  6. 对REST的理解

    现在标准服务基本都提供REST化的接口了.为了加强对REST的理解,看了这篇文章: http://kb.cnblogs.com/page/186516/ REST架构风格最重要的架构约束有6个: 客户 ...

  7. xampp Apache Access forbidden! Error 403解决方法

    今天下载了最新的xampp,配置了一个虚拟主机,一直在报错,Access forbidden! Error 403 这很明显是服务器不允许访问文件,但是我的虚拟主机配置如下: DocumentRoot ...

  8. tensorflow c++ API加载.pb模型文件并预测图片

    tensorflow  python创建模型,训练模型,得到.pb模型文件后,用c++ api进行预测 #include <iostream> #include <map> # ...

  9. Eclipse代码布局怎么使用退格和缩进快捷键?

    Eclipse代码布局怎么使用退格和缩进快捷键? 好的程序,不仅要运行快速准确,而且还要易于理解.研究表明,清晰的代码布局可以提高程序猿的理解能力.何为代码布局?其实就是代码的缩进.留白等.为了保证清 ...

  10. Lateral View使用指南

    https://blog.csdn.net/sunnyyoona/article/details/62894761 select sum(pitem) from (select map_values( ...