京城游戏人-Day2:一些 C# 与 Unity 基本常识
2016-06-28 14:14
585 查看
京城游戏人-Day2:一些 C# 与 Unity 基本常识
-这文关于 C#、Unity、GDGeek 的一些基本常识,主要得益于 GDGeek 的视频内容。
-
1. C# 数组
一维数组的初始化
int[] arrayA = new int[3]; int[] arrayB = new int[] {1, 2, 3}; int[] arrayC = {1, 2, 3};
二维数组的初始化
int[,] array2A = new int[2, 3]; int[,] array2B = new int[] { {1, 2, 3}, {4, 5, 6} }; int[,] array2C = { {1, 2, 3}, {4, 5, 6} };
读取数组的某个值
Debug.Log(arrayA[2]); Debug.Log(array2A[1, 2]);
修改数组的某个值
arrayA[2] = 3; array2A[1, 2] = 4;
获取数组长度
// 一维数组的长度 Debug.Log(arrayA.Length); // 二维数组的里面一层的长度 Debug.Log(array2A[0].Length); // 一维数组的长度 Debug.Log(array2A.Length);
2. 初始化一个成员变量
一般方式
public int number = 0;
set 与 get
比如如下一个 set 写法:public int number { set { _number.text = value.toString(); } }
使用的时候就是:
number = 123;
3. 几个 Unity 的方法
MonoBehaviour 类的 GetComponentsInChildren 方法
获取当前 GameObject 的所有 Text 子节点:this.GetComponentsInChildren<Text>();
设置隐藏或显示一个节点
this.gameObject.SetActive(false); // 隐藏 this.gameObject.SetActive(true); // 显示
在 Unity 的 Console 打印调试日志
Debug.Log("this is a log");
4. GDGeek 的几个好用的脚本
FSM 有限状态机
FSM = Finite State Machine,下面是一个例子。FSM fsm = new FSM(); fsm.addState("begin", beginState()); fsm.addState("play", playState()); fsm.addState("end", endState()); fsm.init("play"); State beginState() { StateWithEventMap state = new StateWithEventMap(); state.onStart += delegate { _view.begin.gameObject.SetActive(true); // 开始时显示 } state.onOver += delegate { _view.begin.gameObject.SetActive(false); // 结束时隐藏 } state.addEvent("begin", "play"); return state; } State playState() { StateWithEventMap state = new StateWithEventMap(); state.onStart += delegate { _view.begin.gameObject.SetActive(true); // ... } state.onOver += delegate { _view.begin.gameObject.SetActive(false); // ... } state.addEvent("play", "end"); return state; } State endState{} { StateWithEventMap state = new StateWithEventMap(); state.onStart += delegate { _view.end.gameObject.SetActive(true); } state.onOver += delegate { _view.end.gameObject.SetActive(false); } state.addEvent("end", "begin"); return state; } fsm.post("play");
OffsetUI
对于 OffsetUI,GDGeek 推荐的用法是:把 OffsetUI 脚本加到一个 empty object 上(叫做 Offset)。
把 UI 的对象作为这个 empty object 的子节点。
其实 OffsetUI 的源码只有几十行,可以读读。
Task
先看一个函数的定义:public static StateWithEventMap Create(TaskFactory creator, FSM fsm, string nextState);
比如我们要做一个 10 秒后执行 FSM 状态切换的小功能:
StateWithEventMap state = TaskState.Create( delegate { TaskWait tw = new TaskWait(); tw.setAllTime(3f); return tw; }, _fsm, "stateX" ); _fsm.addState("stateX", state);
另外要注意的一点:使用 Task 的话,要在 Hierachy 中添加一个 TaskManager(加到根层次即可)。
5. Unity UI 的几个常用组件
Text
Width、Height、文字内容、字号要在 Inspector 中设置。Button
里面套了一层 Text。注意区分 Button 和内层 Text 的尺寸设置。特别注意:用 Button 的时候,要给 Button 添加 OnClick 对应的函数和参数值。
Panel
加上 UI 组件后,会发现系统自动添加了 Canvas、EventSystem,而且你所添加的 UI 组件一定是在 Canvas 下面的。暂时先别惹他们。6. Layout Group
可以给包含 Children 的 object 添加 layout group:Horizontal Layout Group
Vertical Layout Group
Grid Layout Group
-
相关文章推荐
- 如何利用CustomFont+PS制作字体
- 覆盖拷贝文件夹
- 洗牌
- unity3d中使用Scoll Rect实现聊天
- 使用Jenkins搭建构建机(三) 遇到的坑,会持续更新.
- Unity文件操作——调用减压文件解压
- Unity文件操作——File调用内置Exe程序
- Android&&Unity交互——同一个apk
- Vuforia AR 高通SDK 在Unity3D下开发增强现实应用
- Unity与原生Android融合——两个apk之间跳转
- Unity与原生iOS融合——实现简单界面跳转
- GetComponentsInChildren<类> 用法
- 【Unity快速实现小功能】NGUI篇——实现点击有链接的文本
- Unity中手机端WWW读取图片并显示
- 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(63)-Excel导入和导出
- unity动态加载之AssetBundle应用
- Unity_UGUI知识点思维导图1.0
- Mac OS 下安装IntelliJ IDEA Community Edition
- 在Unity3D中获取某个方法的执行时间
- How to Make a VR Game With Unity and Google Cardboard