Unity 开发游戏编写代码的技巧
在平时开发游戏过程中,遇到一些编写代码很繁琐的问题. 我发现我团队中每个人都会遇到,就算打写出来分享下经验.
条件断点
利用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 开发游戏编写代码的技巧的更多相关文章
- Unity 开发游戏Game分辨率设置
最近自己开发小游戏,突然又被Game视图中设置分辨率被诱惑了, 我到底该怎么设置分辨率设置的图片才能让电脑和手机尺寸显示的大小一模一样呢? 然后又被手机尺寸和分辨率迷惑了! =.= 越搞越混 分辨 ...
- Unity开发游戏 flapybird 无广告老马版分享
Flapybird确实是一款非常好玩的游戏,但是上手难度比较大.经过老马模仿加工,把游戏难度降低,而且不加入任何广告. 特此分享.下载地址:http://files.cnblogs.com/fly_d ...
- 【项目实例】android开发游戏音效代码实例
//音效的音量 int streamVolume; //定义SoundPool 对象 private SoundPool soundPool; //定义HASH表 private HashMap< ...
- 使用unity开发游戏时如觉得游戏声音太吵,点Mute Audio
mute静音
- VS开发中的代码编写小技巧——避免重复代码编写的几种方法
上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中, ...
- 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下
写在前面的 其实这个名字起得不太欠当,Unity本身是很强大的工具,可以部署到很多个平台,而不仅仅是可以开发Windows Phone上的游戏. 只不过本人是Windows Phone 应用开发出身, ...
- Unity MMORPG游戏开发教程(一)——初识Unity
五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以C#为介绍语言,基于Unity2017.4.x. 一.环境搭建 我使用的是Unity+VSCode,用的是mac系统,windows的自己 ...
- 使用 Unity 3D 开发游戏的架构设计难点
Unity 3D 引擎对于开发者来说,入手非常快,因为它采用的是 C# 作为开发语言,这也大大降低了开发者的门槛.但凡只要懂一门编程语言的人都能使用 Unity 3D 引擎开发,另外 Unity 3D ...
- Unity 2D游戏开发教程之摄像头追踪功能
Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...
随机推荐
- [BZOJ3238][AHOI2013]差异(后缀数组)
求和式的前两项可以直接算,问题是对于每对i,j计算LCP. 一个比较显然的性质是,LCP(i,j)是h[rk[i]+1~rk[j]]中的最小值. 从h的每个元素角度考虑,就是对每个h计算有多少对i,j ...
- BZOJ 2073 [POI2004]PRZ(状压DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2073 [题目大意] 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍过桥时只 ...
- 【构造】CDOJ1607 大学生足球联赛
请自行百度逆时针轮转法 //单循环赛 逆时针轮转法 #include<cstdio> using namespace std; int n,a[70]; int main(){ scanf ...
- Java如何进行异常处理
关键字:throws.throw.try.catch.finally的用法 Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在Java中,每个异常都是一个对象,它 ...
- Codeforces Round #114 (Div. 1) C. Wizards and Numbers 博弈论
C. Wizards and Numbers 题目连接: http://codeforces.com/problemset/problem/167/C Description In some coun ...
- iOS 带箭头菜单选项弹窗LFPopupMenu
一.效果图 由于是模拟器缩得比较小,一些细线可能显示不出来,不是bug哈. 二.用法 LFPopupMenuItem *item1 = [LFPopupMenuItem createWithTitle ...
- maven-忽略文件-.gitignore文件
# kdiff3 ignore *.orig # maven ignore target/ # eclipse ignore .settings/ .project .classpath # idea ...
- Cargo, Rust’s Package Manager
http://doc.crates.io/ Installing The easiest way to get Cargo is to get the current stable release o ...
- Inno Setup入门(二十一)——Inno Setup类参考(7)
复选框 复选框(CheckBox)用于多个并不互斥的几个选项中作出一个或者多选择,例如字体可以有粗体.斜体和下划线,这三种状态可以任意组合,像这样的选项可以采用复选框实现.Pascal脚本中对应的类是 ...
- Office(Excel、Word)二次开发——VSTO
Office(Excel.Word)二次开发——VSTO Office(Excel.Word)二次开发——VSTO Office二次开发模式: 1) VBA(visual studio for app ...