Unity3d 常用的一些代码

如何在存储一些临时需要的变量,例如分数,星星等?

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种函数

猜你喜欢

转载自blog.csdn.net/dyyzlzc/article/details/108954320