unity 我的第一个项目总结(进行中)
来源:互联网 发布:如何减腓肠肌 知乎 编辑:程序博客网 时间:2024/05/01 09:58
解决暂停问题(用伪暂停)
IEnumerator SolvePause(float time) // solve pause problem .
{
float tmpTime = 0;
while (true) {
if(!DataAll2.paused)
tmpTime+=0.1f;
yield return new WaitForSeconds(0.1f);
if(tmpTime>time)
break;
}
}
关于基类和继承,A:monobehavior
start,update,ienumerator....之类是特殊函数,应该被称为message,他们的继承能被覆盖。且
不用声明为public类型,他们跟public类型作用类似,和多态作用类似。学会使用继承,在基类中定义
virtual 函数。比如:son:father,在father里,
void Start()
{
f();
}
(public) void f()
{
debug.log("a");
}
在son里
(public) void f()
{
debug.log("b");
}
《《《《《那么Start里面还是用的父类中的f(),应该把父类中的f()声明为public virtual类型!!》》》》》
father中的相应变量声明为protected型,以至于在Inspector中不可见,但是在son中可见,方便与虚函数的配合。
enum ,struct 声明在类外,即使不用public修饰也是全局可见,因为这只是声明了类型,像系统的int一样。
更换UIsprite中的sprite图片,更改spritename就行了(在相应的atlas中选一个图片的名字),千万不能用GetComponent<UISprite>().material.mainTexture=。。
这样会更改整个atlas的图片,而且是无法逆转的。。
目前关于抢占的情况无法下定论,虽然开始出现过奇怪的现象,不知道是什么引起,但现在貌似没有这种情况了。。
必须掉三个道具:dataall2.onlyOne保证同时或者不同时点多个蚂蚁只掉一个道具。在pick一个道具后才能重设为false,这样有个问题,当道具掉到外面就不能继续捡了。所以隔一段时间后还要再自动设为false。
关于点击蚂蚁(Hit),我的方法是一般方法也是最费的吧,就是时时刻刻检测是否与Hit collider 碰撞,有个偏门方法,但是很快,只用在点击的时候判断,就是把蚂蚁的tag与当前蚂蚁的脚本关联起来,比如mayi2,可以把tag设为mayi2,脚本设为mayi2,这样只用在点击时根据CastHitInfo来直接调用该脚本中的一个public方法。虽然蚂蚁的tag和脚本名字都不不一样,但是这个方法名一样,方便调用!!但是findgameobjectswithtag..这样的只能用固定的tag。
发现委托的一个现象,每生成一个ant委托加上该ant上的一个方法,当ant被删除后,这个方法仍然在委托中,也能执行,所以蚂蚁死后要把该方法从委托中删除。
委托效率高,但是处理很繁琐,比如加入的方法在很多地方都要删除。
一个物体突然出现在某个地方,而又想和正好接触的物体促发trigger事件,那么这个突现的物体要加上rigidbody。
foreach (GameObject o in GameObject.FindGameObjectsWithTag ("Ant"))中的o实际上就是 gameObject,可以用o得到改物体上的部件,o.GetComponent<>()…但是所有不同的o上可以挂一个相同的脚本ScriptCommon来控制部分功能!!比如冰块的生成。
关于一类物体的tag不一定都相同,可以只用前部分相同就行了,比如,mayi0,mayi1,
。。。在判断是否是同一类的时候用SubString判就行了。。
如果反复调用一句tmpCubeTeam = Instantiate (dragCubeTeam) as GameObject;那么实际只产生一个物体。
第二只:
注意 waitDestroyObj和hitToolBase的区别。
冰块必杀分两大部分-----
冰雹风雪(冰块大招)时是全屏的,最原始也是最慢的方法是大招时放个全屏的collider,这样时时刻刻都要检测是否与该collider碰撞,高级的方法是,事先在蚂蚁脚本里面写个public方法执行冰块生成,然后用委托加上这些方法,在大招时直接调用该委托就行了。改委托可以写在dataall2.cs里面。但是除了这以外,新出生的蚂蚁仍然要中大招,所以要在dataAll2.cs中加一个新的状态,ifbingkuaibisha..
有个现象,当在游戏运行的时候注释代码保存,接下来就会出现离奇的bug。。
如果想destroy某个物体,可以把该物体设为另外一个物体的子物体,然后一次Destroy可以全部删掉。
renderObject.renderer.material.color改了后,就算是换了shader,这个color不会随shader的改变而改变。
- unity 我的第一个项目总结(进行中)
- 我做的第一个项目的项目总结
- 第一个项目(我的智囊团)
- 我的第一个项目
- 我的第一个项目
- 我的第一个项目
- 我的第一个项目
- 第一个项目的总结
- 第一个项目的总结
- unity项目实战(第一个)
- ARM第一个项目中关于C的总结
- 我的第一个项目的收获
- 我的第一个BS项目(ASP.NET)
- 在线视频网站开发(我的第一个c#项目)
- 我的第一个项目:设备管理系统(2)
- 晒晒我的第一个汇编项目(源代码)
- 我的第一个Android项目开发(一)
- 我的第一个WFF项目
- 统一D3D与OpenGL坐标系统
- Android的多媒体数据库
- 开源夏令营Memcached哈希性能优化(二)
- Hibernate的检索方式
- Ubuntu下VMware无法保存配置文件问题
- unity 我的第一个项目总结(进行中)
- Linux原子操作 (Linux atomic operations)
- hdu2180 时钟
- opencv支持多种流行视频格式文件的读取
- 开始
- siegen程学android应用开发重新开始篇——改变之道。
- 自己写的一个Epoll实例
- Keil MDK的FCARM报错的记录
- cocos2d-x Action 动画