• 【Unity】6.1 Unity中的C#脚本基础知识


    分类:Unity、C#、VS2015

    创建日期:2016-04-16

    一、简介

    1、常用的C#数据类型

    这里简单介绍用Unity开发游戏时,最常用的一些数据类型。

    (1)基本类型

    int、float、string、bool

    (2)数组

    public string[ ] familyMembers = new string[ ]{"Greg", "Kate", "Adam",

    "Mia"} ;

    public GameObject[ ] carsInTheScene = GameObject.FindGameObjectsWithTag("car");

    (3)List泛型列表

    public List<string> list=new List<string>();

    ……

    list.Add("a1");

    2、其他数据类型说明

    (1)ArrayList

    优点是可存储任意类型的数据列表,缺点是其效率没有List泛型列表效率高。

    public ArrayList arraylist=new ArrayList();

    ……

    arrayList.Add(10);

    arrayList.Add("abc");

    (2)Hashtable

    注意:即使将其声明为public,在Unity的检视器中也不可见。所以如果使用它,一般将其声明为private,供脚本内部使用。

    private Hashtable h=new Hashtable();

    ……

    h.Add("playerName","aa");

    h.Add("gender","male");

    h.Add("age",20);

    3、变量声明时注意的问题

    (1)声明为public的变量才能在检视器(Inspector)中可见。

    (2)声明为public的变量会在检视器(Inspector)中自动变为属性名。

    (3)避免使用含义不明确的变量名。例如:name、speed、score最好改为用playerName,carSpeed,opponentScore来代替,因为name看不出是谁的名字,玩家的?敌人的?如果是多个玩家、多个敌人更不明白是谁的名字了。

    二、初学者容易犯迷糊的问题

    1、应该将脚本文件添加到哪

    可将脚本文件添加到任何游戏对象(GameObject)中。

    GameObject是其他游戏对象的基类(GameObject继承自Object类)。换言之,Unity中除了Object以外的所有其他组件,都是从GameObject继承的。

    2、脚本执行的顺序

    Start():开始运行游戏时调用一次,此时还没有调用Update()。

    Update():每一帧都会调用一次,一般利用它更新场景参数。

    LateUpdate():每一帧调用Update()后都会调用一次,一般利用它更新相机参数。

    FixedUpdate():每经过一个固定的物理时间间隔都会调用一次,一般利用它更新成绩、能量等参数。

    Awake():开始运行游戏时,在Start()之前调用一次。一般利用它初始化参数。

    3、怎么知道会自动调用哪些方法

    在VS2015的脚本编辑状态下,鼠标右击选择【Implement MonoBehabious】:

    image

    然后在弹出的窗口中勾选要添加的方法(这些都是Unity自动调用的方法):

    image

    也可以一次选择多个方法,选择后单击【OK】,VS2015就会自动生成相关的代码。

    4、哪种写法好

    下面举例解释,虽然例子简单到没有任何意义,但是能让你很快明白,特别是获取组件时更是如此。

    功能需求:定义并修改某个值(初始化),修改以后,后面一直都使用这个值。

    笨的写法(效率非常低):

    public void Update()

    {

    int age = 25;

    }

    “笨”的原因:这样每一帧都会执行一次定义并赋值,导致效率很低。

    应该是(只执行1次):

    private int age;

    public void Start()

    {

    age = 25;

    }

    三、MonoBehaviour类

    MonoBehaviour是Unity中一个非常重要的类,它定义了基本的脚本行为,所有的脚本类均需要从它直接或间接地继承,脚本必然事件就是从MonoBehaviour继承而来。

    在VS2015中鼠标右击MonoBehaviour类,然后选择【转到定义】可观察该类的细节。

    1、针对特定事件的响应函数

    除了必然事件以外,MonoBehaviour还定义了对各种特定事件(例如鼠标在模型上单击,模型碰撞等)的响应函数,这些函数名称均以On作为开头。

    下面是常用的针对特定事件的响应函数:

    image

    2、通过变量访问组件

    编写脚本的目的是用来定义游戏对象(GameObject)的行为,因此会经常需要访问继承自游戏对象(GameObject)的各种组件并设置组件参数。对于系统内置的常用组件,Unity提供了非常便利的访问方式,只需要在脚本里直接访问组件对应的成员变量即可,这些成员变量定义在MonoBehaviur中并被脚本继承了下来。

    下面是常用的组件及其对应的变量:

    image

    注意:如果对象不存在对应的组件,则该组件对应的变量值为null。

    四、利用调试模式寻找合适的初始值

    在调试模式下(即:按播放按钮)运行时,可直接在检视器(Inspector)中修改属性的值,调试结束后(即:再次按播放按钮)这些属性的值会自动还原为原来的值。

    通过这种方式,不必每次都编译运行,就可以方便地给脚本中的变量找到合适的初始值。找到后结束调试,然后再修改脚本中变量的初始值就行了。

  • 相关阅读:
    windows red5相关
    redis集群及相关的使用
    c# 并行运算
    C# Thread
    html5网页录音
    netcore log4相关
    Swagger插件netcore配置
    MongoDB操作集
    .Net Core知识点
    C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别
  • 原文地址:https://www.cnblogs.com/rainmj/p/5398032.html
Copyright © 2020-2023  润新知