在FSM文件夹下创建4个游戏状态类(MenuState,PlayState,PauseState,GameOverState),将FSMSystem脚本里的FSMState里的构造函数struct修改为虚函数virtual,再将4个游戏状态类都设置为继承自FSMState,并在Ctrl下创建空物体,改名为State,然后拖拽挂载4个游戏状态类。再在Ctrl类中构造FSM,存入四种状态类,并将MenuState设置为默认状态。
在FSM文件夹下创建4个游戏状态类(MenuState,PlayState,PauseState,GameOverState),将FSMSystem脚本里的FSMState里的构造函数struct修改为虚函数virtual,再将4个游戏状态类都设置为继承自FSMState,并在Ctrl下创建空物体,改名为State,然后拖拽挂载4个游戏状态类。再在Ctrl类中构造FSM,存入四种状态类,并将MenuState设置为默认状态。
1.在http://wiki.unity3d.com/网址下载导入现成的有限状态机代码。
2.分析四种游戏状态(菜单状态,游戏状态,暂停状态,结束状态)。
3.scripts文件夹下创建FSM文件夹,再创建FSMSystem脚本,复制有限状态机代码粘贴,FSMState需要挂载在游戏物体上,因此需要加后缀Monobehaviour。
设计5种形状,左L,右L,土,左Z,右Z。制作成预制体。
设计2种下落的基本图形,方块和长条,先在Prefabs下建立文件夹Shapes,再利用Block预制体建立Shape1(方块)和Shape2(长条)并制作预制体,建立Tag标签Block,将Shape下的Block归类入Block标签,建立旋转中心点Pivot(不归类)。
设计游戏背景,Block方格放置在坐标轴0,0位置为一个背景方格(放在View下而不是Canvas下),做一个prefab,然后按住ALT复制水平排列(10格)(放到空物体Row下),纵向复制(20行)(整体放置到空物体Map下),再调整MainCamera的Size,将背景地图居中显示,并调整Block的颜色为浅灰色。
1. 技术人才永远不会饱和,技术人员稀缺,特别是高技术人才。就想上山一样,越是山顶人越少。
2.准备4个中小型项目,界面背包啥都有,直接给面试官看、试玩,发布到app store上(淘宝上买一个开发账号)
slot和item脚本比较重要,特别是slot中的各种方法,看的有点
1
foreach (object key in tab.GetKeys())
{
print(tab.Get<object>(key));
}
老师视频里foreach遍历类型是string,所以类型转换错误。
群组行为
play automatically自动播放动画(Animation)
映射到LuaFunction
func.Call(1,2)
3.映射到Dictionary<>,List<>
12Mesh合并代码
unity的性能优化
DoBeforeEntering当我们进入状态时会调用的方法
但是我的电脑正对门,又不敢
struct SubArray
{
public int startIndex;
public int endIndex;
int total;
}
static SubArray GetMaxSubArray(int low, int high, int[] array)
{
if(low == high)
{
SubArray subarray;
subarray.startIndex = low;
subarray.endIndex = high;
subarray.total = array[low];
return subarray;
}
SubArray subArray1 = GetMaxSubArray(low,mid,array);
SubArray subArray2 = GetMaxSubArray(mid+1,high,array);
//从[low,mid] 找到最大子数组[i,mid]
int total1 = array[mid];
int startIndex = mid;
int totalTemp = 0;
for(int i = mid;i >= low; --i)
{
totalTemp += array[i];
if(totalTemp > total1)
{
total1 = totalTemp;
startIndex = i;
}
}
//从[mid+1,high]找到最大子数组[mid+1,j]
int total2 = array[mid+1];
int endIndex = mid+1;
totalTemp = 0;
for(int j = mid+1;j <= high; ++j)
{
totalTemp += array[j];
if(totalTemp > total2)
{
total2 = totalTemp;
endIndex = j;
}
}
SubArray subArray3;
subArray3.StartIndex = startIndex;
subArray3.EndIndex = endIndex;
subArray3.total = total1+total2;
if(subArray1.total >= subArray2.total && subArray1.total >= subArray3.total)
{
return subArray1;
}else if(subArray2.total >= subArray1.total && subArray2.total >= subArray3.total)
{
return subArray2;
}
else {
return subArray3;
}
}
单一职责原则
开-闭原则
里氏替换原则
依赖倒置原则
接口隔离原则
最少知识原则(迪米特法则)
少用继承多用组合(合成复用)
《设计模式 可复用面向对象软件的基础》
《head First 设计模式(中文版)》
《设计模式与完美游戏开发》
这里算法。感觉可以写这样
for(int i = 0 ;i < len ; ++i)
{
int temp = 0;
for(int j = i; j < len; ++j)
{
temp += array[j];
if(temp > total)
{
total = temp;
startIdx = i;
endIdx = j;
}
}
}