Unity3D-C#脚本介绍

Unity3D脚本介绍

脚本就是附加在游戏物体上用于定义游戏对象行为的指令代码。Unity支持C#高级编程语言。

1.语法结构
using 命名空间;
public class 类名:Monobehaviour
{
	void 方法名()
	{
		Debug.Log("调试信息.");
		print("调用Debug.Log()方法.");
	}
}
  • 文件名与类名必须一致。
  • 写好的脚本附加到物体上才能执行。
  • 附加到物体的脚本类必须从MonoBehaviour类继承
2.创建脚本

1.右键–>Create–>C# Script,即可创建脚本,然后使用双击文件,使用编程工具打开,即可编写代码。生成代码如下,若start和Update不需要使用,应该删除然后在编写代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class g_demo : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

3.脚本生命周期

1.编写代码如下,将该文件拖拽待摄像机上,效果如下。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class g_demo : MonoBehaviour
{
    public int a = 10;
    private int b = 20;
}

在这里插入图片描述
2.通过上述修改a的值为a=100,则a的值为该面板中的值,即上述效果其实是创建了一个对象。若需要在面板中显示private修饰的b的值,需要添加修饰字段 [SerializeField] ,它允许在编辑器中显示私有变量。
在这里插入图片描述
3.隐藏变量
添加 [HideInspector]字段 修饰。

4.对于写继承至MonoBehaviour的脚本文件,只需要写字段和方法。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class g_demo : MonoBehaviour
{
    public int a = 10;

    [SerializeField]
    private int b = 20;

    [HideInInspector]
    public int c = 10;

    [Range(0, 100)]
    public int r;


    /*
     * 属性:在编辑器不能显示,通常脚本中不需要写。
     * 构造函数也不需要写,在Unity中,创建脚本对象,系统会创建子线程,而在构造函数中初始化,会出现无法访问主线程的资源(Unity脚本对象)而出错。
     * 在Unity中,脚本是以一个对象的形式存在的,与代码无关了。
     * 在脚本中,只需要写字段和方法。
     */
    public int a_Value
    {
        get { return this.a; }
        set { this.a = value; }
    }
}

显示的效果
在这里插入图片描述

4.初始化
  • Awake唤醒:当物体载入时,立即调用一次,常用于游戏开始前的初始化可以判断当满足某种条件执行此脚本this.enable=true。
  • OnEnable当可用:每当脚本对象启动时调用;
  • Start开始:物体载入且脚本对象启用时被调用一次。常用于数据或游戏逻辑初始化,执行时机晚于Awake。
  • 如下启用脚本。
    在这里插入图片描述
    /*******************初始化**********************/
    private  void Awake()
    {
        Debug.Log("Awake-->" + Time.time+this.name);
    }

    private void Start()
    {
        Debug.Log("Start-->" + Time.time + this.name);
    }

在这里插入图片描述
若某对象A需要在对象B后执行初始化,则可以把B对象的写在Awake里,A写在Start里面。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秘境之眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值