最近又做了一个unity的项目,把出现的一些问题及解决方法写下来
(1)关于第一人称相机问题
第一人称相机带有Mouse Look脚本,这样会导致相机时刻随鼠标转动,当实现提示框功能时,用鼠标进行选择的时候会出现镜头晃动,体验效果很不好,这个时候应该动态的将第一人称携带的脚本组件删除掉,通过Script = find(“脚本名称”)在destroy(script)即可,当执行完毕后在添加该组件,addgetcomponent("").这样体验效果就非常好了,不会出现相机跟随鼠标乱动的情况。
具体代码如下:
//首先定义变量
GameObject player;
GameObject playercam;
// 进行初始化操作
void Start () {
//通过代码找到定义的对象
player = GameObject.Find("First Person Controller");
playercam = GameObject.Find("Main Camera");
}
// Update is called once per frame
void Update () {
}
void OnGUI()
{
if(GUILayout.Button("取消mouselook"))
{
//移除MouseLook脚本,注意下面的Object类型,而不是GameObject
Object script1 = player.GetComponent("MouseLook");
Destroy(script1);
Object script2 = playercam.GetComponent("MouseLook");
Destroy(script2);
}
if(GUILayout.Button("添加mouselook"))
{
//添加MouseLook脚本
Object script1 = player.AddComponent("MouseLook");
Object script2 = playercam.AddComponent("MouseLook");
}
}
************************************************************************************************写在下面
//昨天又对项目做了测试,发现这种方法不是很好,会出现bug,也就是按键行走方向有时候会出错, 按向前的键可能向后走类似这种bug,最后通过在场景中添加定点相机解决了该问题。也就是当弹出窗口时,第一人称关掉,打开定点相机,窗口消失后,再切换回来
(2)闪光标记效果
有时候在游戏中,为了达到提示玩家的作用,往往会放置一些突出的标记。通过3dmax做出的模型通常不自带闪光效果。这时候可以通过代码来控制。利用颜色渐变的效果,将该脚本拖入模型中即可。脚本如下:
var colorStart = Color.red;
var colorEnd = Color.green;
var duration = 1.0; //值越小,变化的效果越明显
function Start()
{
}
function Update () {
var lerp = Mathf.PingPong (Time.time, duration) / duration;
renderer.material.color = Color.Lerp (colorStart, colorEnd, lerp);
}
(3)GUI窗口弹出功能
在同一个游戏中,为了达到界面统一性,最好用统一的窗口。而只改变窗口里面的lable,button即可,通过设置int i的值来显示不同的文字等。
(4)充分利用unity自带的粒子效果
在游戏中很多特效都可以用unity自带的粒子效果,比如水的特效,通过改变纹理贴图就可以创建不同的想要的效果,其他粒子效果比如烟,火焰等都可以更换贴图来模拟其他现象,总之使用粒子效果非常方便。
(5)让程序延迟几秒钟再执行
有时候需要让程序延迟几秒钟在执行,比如游戏中当闯关成功后,弹出胜利界面,1s后界面自动消失进入解锁界面,可以利用Invoke(“函数名”,延迟时间),比如Invoke(“yanchi(函数名)”,1(延迟时间,单位为秒)),在写一个yanchi(){要做的事情即可}。
(6)unity版本控制器
有时候同一个场景会有许多关卡,而一个项目往往是由多个人完成的。这个时候通过利用unity版本控制器可以同时进行,进行上传更新即可达到同时更新效果。但是我们在用版本控制器的时候会出现问题,由于场景名称是相同的,每次更新后都会有冲突,导致之前的场景被冲掉,效果不好。最后通过创建预制体的方法,得到了很好的解决。也就是说每个人新增加的模型或者脚本,都统一放在一个文件夹中,层级面板放模型,project面板放脚本等,然后创建一个预制体,将模型文件夹创建预制体即可。然后对预制体进行打包,再将预制体导入到项目总管理的机器即可。这时候预制体携带了新做的所有东西,包括脚本,纹理,模型等。在导入的时候还需要注意:有时候会导入比较多的东西,如果原场景中有该东西的话会有冲突,所以要保证脚本不能与原场景有重名。
***********************************************************************待续