如何在存储一些临时需要的变量,例如分数,星星等?
PlayerPrefs.GetFloat/GetInt/GetString(SetXXXX)
GetXXX(“key名”,没找到时返回的默认值);
key = val的形式
如何修改界面上的text组件?
1, using UnityEngine.UI;
2. 设置public Text对象,并且设置
3. obj.text = "123123123";
如何实现暂停游戏的效果
Time.timeScale = 0 ; 暂停游戏,常用于菜单调出
=1的话是恢复
如何实现重新加载场景
1. using UnityEngine.SceneManagement
2.场景要加入build setting中。可以百度看下具体的
3. SceneManager.LoadScene(id号); 此函数为同步方法,如果场景太大会导致阻塞
3. SceneManage.LoadSceneAsync(id号)这个就是异步方法了
通常情况下,public的属性是会在游戏面板中显示的,添加这个属性以后,就可以不在游戏面板显示
[HideInInspector]
public xxxxx;
如何操作主摄像机?
Camera.main.xxxxxx
如何播放声音?
public AudioClip xxx;游戏面板设置
AudioSource.PlayClipAtPoint(AudioClip对象,位置信息);
触发鼠标的动作
void OnMouseDown() void OnMouseUp()
if(Input.GetMouseButtonDown(0)) 如果左键按下
如何设置物体的速度?
刚体组件.velocity = xxx;
如何设置一个物体的位置?
xxxx.transform.position = originPos; Vector3的变量
如何平滑的移动?
在update里设置xxx.position = Vector3.Lerp(当前位置,目标位置,时间)
一般时间会设置为 一个值*Time.deltaTime
如何把一个值限定在一个范围之内?
Mathf.Clamp(当前值,最小值,最大值) 可以做摄像机范围的限定
如何画线?
1.在某个GameObject上添加LineRender组件
2.在某个函数中,获取到这个LineRender组件【可以用public来获取,也可以用GetComponent获取】
3.开始画画,设定线的点就可以了
right.SetPosition(0, rigthPos.position); 第0个点 right.SetPosition(1, transform.position); 第1个点
后面可以加其他点。
如何延迟执行函数,例如0.5s以后执行某个函数
Invoke("函数名", 0.5f);
如何动态的新建一个对象?例如猪猪死了以后在上面显示分数和爆炸特效?
Instantiate(boom, transform.position, Quaternion.identity); //爆炸特效
第一个参数是个GameObject,可以用public面板属性来设置
第二个参数是该对象产生的位置
第三个参数是旋转参数,保持默认的Quaternion.identity就可以
如何摧毁一个对象?
Destroy(this.gameObject);
也可以延迟销毁对象
Destroy(gameObject,1.5f);
如何获取两个点的距离?(Vector3)
Vector3.Distance(rigthPos.position, transform.position)
如何获取一条向量的长度?
Vec.magnitude (2d,3d都有)
如何单位化一个向量?(一般用于解决旋转和限定大小的问题)
Vec3.normalized
如何启用、禁用一个组件?
sp = GetComponent<SpringJoint2D>();
sp.enable = false/true;
任何东西都可以 .enable = true/false;
如何启用,禁用一个对象?【作用相当于在Inspector中点击√】
GameObject.SetActive(true);
如何动态修改精灵Sprit的图片?
private SpriteRenderer render;
public Sprite hurt; //受伤的资源图片,在UNITY面板中拖动设置
首先需要在void Awake函数中获取
render = GetComponent<SpriteRenderer>();
然后就可以修改了
render.sprite = hurt;
如何获取碰撞瞬间的信息? & 物体的相对速度大小?
void OnCollisionEnter2D(Collision2D collision)
{
print(collision.relativeVelocity.magnitude);
}
如何获取Trigger时所触发物体的tag?
void OnTriggerEnter2D(Collision2D collision) 开始发生碰撞
void OnTriggerExit2D(Collision2D collision) 结束碰撞
collision.gameObject.tag 为碰撞物体的tag名称。
如何修改动画状态机的变量?以实现动画状态之间的转移?
1.先获取动画组件
2.anim.SetBool("isPause",true); 这里根据你增加的状态机的变量类型,有4种函数