Unity3d 常用的一些代码

    科技2024-10-21  19

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

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

    Processed: 0.026, SQL: 8