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

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值