最近又做了一个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面板放脚本等,然后创建一个预制体,将模型文件夹创建预制体即可。然后对预制体进行打包,再将预制体导入到项目总管理的机器即可。这时候预制体携带了新做的所有东西,包括脚本,纹理,模型等。在导入的时候还需要注意:有时候会导入比较多的东西,如果原场景中有该东西的话会有冲突,所以要保证脚本不能与原场景有重名。


***********************************************************************待续