Unity 学习笔记3
一:控制灯光的脚本:
Public Light aLight;
aLight = GameObject.Find("有灯光的一个物体名字").GetComponent<Light>();
//以上代码可以将代码信息传递给这个物体的光组件。
aLight.light.intensity = 一个小于8的float数;//这样就可以控制灯组件的亮度了。
注意,这样写完以后,在Inspector面板的选项处就不能为aLight设置目标了,否则会报错;
二:定时器:
Public float Max =10.0f;//定义一个最大的时间
Void Update()//在每一帧检测
{
if(max > 0.0f)
{
Max -= Time.deltaTime;
}
Else
{
Max=10.0f;
…………
}
}//每隔max时间执行else中代码;
三:键盘事件的获取
1.按下事件:
Input.GetKeyDown();//如果按下按键,返回ture,否则返回false
例如:
If(input.GetKeyDown(KeyCode.A))
{
Debug.log("按下了A键");
}
2.拾起事件:
Input.GetKeyUp();//如果抬起了按键,返回ture
例如:
If(input.GetKeyUp(KeyCode.A))
{
Debug.log("抬起了A键");
}
3.长按事件:
Input.GetKey();
例如:
Int num=0;
If(input.GetKey(KeyCode.A))
{
num++;
Debug.log("A被连按了"+num+"次");
}
四:载入新场景
例如一个碰撞器触发的载入新场景:
Void OnTriggerEnter(collider player)
{
Application.LoadLevel("场景名字");
}
五:导出游戏到特定的平台
1.file->buildsetting
2.将已建好的场景拖入scenes inbuild窗口实现添加,注意场景排序。
3.点击player setting按钮,在Inspector面板设置游戏基本信息,如:公司名字,游戏名字,游戏图标。在per-Platform Setting选项中,保证对应平台正确,对于pc,可以调节分辨率,品质,全屏与否等等。
4.点击build and run或者build保存exe文件即可…
六:烘培光照贴图
1.设置静态物体,告诉系统场景中哪些物体是静态的。
选中物体,在Inspector面板中勾选static即可。
2.windows->lightmapping(光照贴图)
在object选项中选择烘培起作用的物体。
在bake选项中:Mode中,选择DualLightmaps系统会创建出远景和近景两层光照贴图;移动平台低效果游戏可以选Use in forward rend选项;在最下面可以设置天空光线。
在maps选项:添加light probes(光线探测器),可以采集场景中的光线信息并应用到动态物体上。
创建空物体,选中该物体,Addcomponent->rendering->light probes
然后Add Probe,将探测器布置到场景中即可,探测器布置的越多,采样效果越好。
回到maps选项,bake probes将探测器烘培到场景中,然后回到object选项,将bakeprobes改为bake scene。
烘培结束后删除场景中的光源。
要想探测器对动态物体生效,对于动态物体,要选中use light probes选项。
七:动画制作
Ctrl+6或windows->Animation打开动画编辑窗口,在资源文件夹内新建储存动画的文件夹Animation,选中物体,点击小红点,就可以录制动画了;
八:动画控制(同一角色不同状态触发不同动画)
1.在3ds max里创建动画,导出FBX格式文件,命名规则: 物体名@动画名
2.在unity3d素材文件夹导入FBX文件,设置rig为legacy;
3.将模型拖入场景中,在Animations选项中设置size为需要导入的动画片段数,在下面依次导入动画片段。
4.写脚本:
animation.wrapMode = WrapMode.Loop; //设置所有动画为循环播放,还有其他方式可设置;
播放动画代码为:
animation.play("动画名"); //没有任何过度的播放一个动画;
animation.CrossFade("动画名"); //自动的从正在播放的动画平滑的切换到指定的动画;