前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Unity】随心记

【Unity】随心记

作者头像
鸡先生
发布2023-03-11 10:49:38
2540
发布2023-03-11 10:49:38
举报
文章被收录于专栏:鸡先生鸡先生

组件的生命周期

代码语言:javascript
复制
//使用 Awake 来代替构造函数进行初始化,因为组件的序列化状态在构造时是未定义的。
//与构造函数一样,仅调用 Awake 一次。
//调用时间:最早调用,所以一般可以在此实现单例模式
void Awake(){}

//调用时间:组件激活后调用,在Awake后调用一次
OnEnable(){}

//初始化函数,在所有Awake函数运行完之后(一般是这样,但不一定)在所有Update函数前系统自动条用。
//一般用来给变量赋值。
//调用时间:在UpDate之前调用一次,在OnEnable之后调用,可以在此设置一些初始值
void Start(){}

//固定帧率调用方法,每次调用与上次调用的时间间隔相同
void FixedUpdate(){}

//调用时间:帧率调用方法,每一帧调用一次,每次调用与上次调用的时间间隔不相同
void Update(){}

//调用时间:在Update每调用完一次后,紧跟着调用一次
void LateUpdate(){}

//调用时间:在OnEnable相反,组件未激活时调用
void OnDisable(){}

//调用时间:被销毁后调用一次
void OnDestroy(){}

角色控制

基础移动与转向

代码语言:javascript
复制
    public float moveSpeed;//移动速度

    private Rigidbody2D rb;//2D刚体对象
    private bool facingRight = true;//转向判断条件
    private float moveDirection;//按键事件 返回1 , -1

    //初始化
    private void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    //帧事件
    void Update()
    {

        //获取按键
        ProcessInputs();

        //转向判断
        Animate();

        //水平移动
        Move();

    }


    private void Move()
    {
        rb.velocity = new Vector2(moveDirection * moveSpeed, rb.velocity.y);
    }
    private void Animate()
    {
        if (moveDirection > 0 && !facingRight)
        {
            //转向
            FilpCharacter();
        }
        else if (moveDirection < 0 && facingRight)
        {
            FilpCharacter();
        }
    }
    private void ProcessInputs()
    {
        moveDirection = Input.GetAxis("Horizontal");
    }
    private void FilpCharacter()
    {
        facingRight = !facingRight;
        transform.Rotate(0f, 180f, 0f);
    }

碰撞监听

需先给碰撞对象添加 Collider 碰撞器组件

代码语言:javascript
复制
//监听发生碰撞
private void OnCollisionEnter(){}

//简体持续碰撞
private void OnCollisionStay(){}

//结束碰撞
private void OnConllisionExit(Collision collision){}

GetComponent<T>

得到单独一个对象或属性

可用于获取:模型对象,对象的属性,对象悬挂脚本

代码语言:javascript
复制
//获取模型对象
脚本名(ScriptName) 接收对象(Model) = GetComponent<脚本名(ScriptName)>();
//通过模型绑定的脚本来获取模型对象, 注意:如果多个模型上绑定同一个脚本,只会获取到最后绑定脚本的模型对象

//获取对象的属性
GameObject NewGame;//创建一个对象并为对象赋值
Button button= NewGame.GetComponent<Button>();//得到NewGame绑定的button属性

//对象悬挂脚本
GameObject NewGame;//创建一个对象并为对象赋值
脚本名(ScriptName) 接收对象(Model) = NewGame.GetComponent<脚本名(ScriptName)>();//得到NewGame绑定的脚本
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 组件的生命周期
  • 角色控制
    • 基础移动与转向
      • 碰撞监听
      • GetComponent<T>
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档