unity学习笔记(3)unity脚本

这篇博客详细介绍了Unity中的脚本使用,包括脚本介绍、语法结构、生命周期和调试方法。此外,还深入讲解了常用API,如Component、Transform、GameObject、Object和Time,并提供了相关代码示例。最后,文章提到了预制件(Prefab)的概念及其在动画系统中的应用。
摘要由CSDN通过智能技术生成

(一)脚本介绍

1.脚本介绍:

附加在游戏物体上用于定义游戏对象行为的指令代码(.cs文件)就是一个类 

支持三种高级编程语言:c# 、JavaScript;

unity自带开发工具:MonoDevelop 支持多个集成开发环境;visual studio 主要用这个

更改模板:unity--属性--打开文件位置--data--tools64--resource--scripttemplates--81-C#.txt


2.语法结构:

using 命名空间;//避免类重名

public class 类名:MonoBehaviour

{

    void 方法名(){

           Debug.Log("调试显示信息");

           print(“本质就是Debug.Log方法”);

    }

}

文件名和类名一致;写好的脚本必须附加到物体上才执行;附加到游戏物体的脚本类必须从MOnoBehavior类继承(实际上是,把类的实例对象交给了gameobject

编译过程:源代码--CLS--中间语言(dll)--Mono Runtime--机器码


 

3.脚本生命周期:脚本从唤醒到销毁的过程

必然事件、消息:当满足某种条件unity自动调用的函数  

搜索:unity5圣典--monobehaviour / un11ity组件旁边的小书

三个问题:名字 时机 适用性

初始阶段:Awake(物体载入立即调用;常用于游戏开始前进行初始化,可以判断当满足某种条件执行此脚本 this.enble=true) OnEnable(脚本启用就执行) Start

物理阶段:FixedUpdate  Update  LateUpdate(延迟更新 在update函数被调用后执行 适用于跟随逻辑 实际操作差别不大)

输入事件:OnMouseDown(前提是物体有碰撞器组件)OnMouseEnter OnMouseOver OnMouseUp OnMouseExit

场景渲染:OnBecameVisible 当Mesh Renderer在任何摄像机上可见  OnBecameInVisible:都不可见

结束阶段:OnDestroy (当脚本或者游戏对象销毁) Ondisable(当对象不可用时激活 或者复数游戏对象非激活)OnApplicationQuit(当程序结束)

 

新建Lifecycle.cs文件,代码示例1:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 脚本生命周期/必然事件/消息 Message
/// </summary>

public class Lifecycle : MonoBehaviour
{
    //C#:字段 属性 构造函数 方法
    //脚本:字段 方法
    
    public int a=100;//public的对象,在检查器中能显示,可快速更改数据 100是默认情况


    //序列化字段 作用:在编辑器中显示私有变量
    [SerializeField]
    private int b = 100;//不希望被访问 但是希望检查器能看见

    //在编译器中隐藏字段 可访问
    [HideInInspector] 
    public int c = 100;

    //在编译器中修改的时候有范围限制
    [Range(0,100)]
    public int d = 50;

    //属性在检查器看不见,在脚本中一般不写
    public int A
    {
        get
        {
            return this.a;
        }
        set 
        {
            this.a = value;
        }
    }

    //错误情况:不能在子线程中访问主线程成员
    //不要在脚本中写构造函数
    /*
    public float e;
    public Lifecycle()
    {
        e = Time.time;
        Debug.Log("构造函数");//相当于writeline 运行时在控制台
    }
    */
    

    //**********************初始阶段***********************//
    //执行时机:创建游戏对象 执行1次
    //作用:初始化
    private void Awake()
    {
        Debug.Log("Awake"+Time.time+"--"+this.name);//Awake0 表示0秒被执行 
    }

    //所有物体的awake执行后再start 但是awake暂时不可以规定谁先

    //执行时机:游戏物体创建 脚本启用后 执行1次
    //作用:初始化
    private void Start()
    {
        Debug.Log("Start" + Time.time + this.name);//先Awake再Start  
    }


    //**********************物理阶段***********************//
    //执行时机:每隔固定时间(0.02)执行(可以修改 不建议)
    //适用性:适用于对对象进行物理操作(移动、旋转等) 不会受到渲染影响
    //渲染时间不固定 (每帧渲染量不同、机器性能不同)
    private void FixedUpdate()
    {
        Debug.Log("FixedUpdate" + Time.time + "--" + this.name);
    }
    //执行时机:渲染帧执行,执行间隔不固定
    //适用性:处理游戏逻辑 按帧移动
    private void Update()
    {
      
    }

    private void OnMouseDown()
    {
        Debug.Log("OnMouseDown");
    }

    private void OnMouseEnter()
    {
        
    }


}

4.调试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值