项目需要在GUI上做一些特效,按道理应该是直接做2D序列帧动画,然后GUI播放的,但是介于美术实现的时间原因,决定用例子来做UI特效,但是目前遇到难题是GUI不能加载粒子。
所以决定运用公告板来虚拟一个UI,脚本代码如下:
FaceToCamera.cs
using UnityEngine;
using System.Collections;
using System;
public class FaceToCamera : MonoBehaviour
{
public Camera _camera;
public float _z = 5.0F;//纵深
public float _x = 1.0F;//相对中心点x偏移
public float _y = -1.0F;//相对中心点y偏移
void Update()
{
_camera = Camera.current;//获取当前摄像机
if (!_camera) return;
transform.rotation = _camera.transform.rotation;//将对象角度与摄像机统一
transform.position = _camera.transform.position;//将对象移动到摄像机当前位置
transform.Translate(Vector3.forward * _z);//纵向推远,否则看不见
transform.Translate(Vector3.right * _x);
transform.Translate(Vector3.down * _y);
}
}
以上代码即可完成一个自动匹配摄像机的全方向公告板,即便摄像机来回切换Gameobject也会自动匹配上摄像机。唯一缺陷是该公告板不停刷新,可能会在某些极端情况下出现闪烁。
该Cube仅用于测试,此脚本适用于任意的Gameobject。