【Unity3D】四、基础的脚本编程

2019-08-03  本文已影响0人  超级超级小天才

从脚本开始

将脚本添加给GameObject

有三种方法可以将脚本添加给一个GameObject让其成为它的Component。

访问限定词

几个周期函数

Unity3D中的向量

向量运算

完整Vector2参考:https://docs.unity3d.com/ScriptReference/Vector2.html?_ga=2.148748272.693619093.1552224779-1809290818.1551791741

GameObject与Component

获取Component

GameObject gameObjectName = GameObject.Find("  ");
ComponentType componentName = gameObjectName.GetComponent<ComponentType>();

控制Component是否可用

// if  componentName  is a component got already
componentName.enabled=false;     //disable the component
componentName.enabled=true;     //enable the component

获取GameObject

ComponentType componentName = GameObject.FindGameObjectsWithTag("tag");
ComponentType componentName = GameObject.FindWithTag("tag");

控制GameObject是否可用

// if  gameObjectName  is a GameObject got already
gameObjectName.SetActive(false);     //disable the GameObject
gameObjectName.SetActive(true);     //enable the GameObject

判断GameObject是否可用

// if gameObjectName is a GameObject got already

语法 作用
gameObjectName.activeSelf 判断其本身是否active,其父物体为disable,但是其本身可能还是active
gameObjectName.activeInHierarchy 判断其所在分级是否active,即其父物体是否active

获取Transform

移动(Translate)和旋转(Rotate)

销毁(Destroy)

Destory(GameObject/Component);
Destory(GameObject/Component,DelaySecond);

获取输入

获取按键输入

Input.GetButtonDown("name");     // 键钮按下时的一帧为true
Input.GetButton("name");     // 键钮按下时保持为true
Input.GetButtonUp("name");     // 键钮按下然后释放后的状态下保持为true
Input.GetKeyDown(KeyCode.name);     // 键钮按下时的一帧为true
Input.GetKey(KeyCode.name");     // 键钮按下时保持为true
Input.GetKeyUp(KeyCode.name");     // 键钮按下然后释放后的状态下保持为true

KeyCode完整参考:https://docs.unity3d.com/ScriptReference/KeyCode.html

获取水平/竖直轴向输入

使用以下函数均可传入一个参数的两个值:“horizontal”、“vertical”来分别表示水平和竖直方向的运动

Input.GetAxisRaw() //在参数设置的方向上返回 -1 或 1 两个值中的一个,即即止即停
Input.GetAxis() //在参数设置的方向上返回一个 -1 到 1 之间的float值,即有一定的缓冲变动的效果

获取鼠标输入

DeltaTime

DeltaTime是指的每两个 Update() 函数或者 FixedUpdate() 函数调用之间的时间间隔,使用 Time.deltaTime 获得

数据类型

数据类型

类(Classes)

实例化预设体(Instantiate Prefab)

使用 Instantiate 来创建某个预设体(Prefab)的复制品(Clones):
首先使用public变量来获取目标Prefab:public PrefabType prefabName

Instantiate完整参考:https://docs.unity3d.com/ScriptReference/Object.Instantiate.html?_ga=2.116872129.693619093.1552224779-1809290818.1551791741

数组(Arrays)

在Unity的脚本中声明一个 public 类型的数组变量,不需要传入具体的大小,这样的数组可以在Inspector处直接更改数组大小,并且随着数组大小的改变还会自动为你添加每一个数组的参数值。
然后使用 foreach 循环或者 for 循环可以很方便的遍历整个数组。

public GameObject[] gameObjects;

void Start()
{
    Debug.Log("Using For");
    for(int i = 0; i < gameObjects.Length; i++)
    {
        Debug.Log(gameObjects[i].name);
    }

    Debug.Log("Using Foreach");
    foreach(GameObject items in gameObjects)
    {
        Debug.Log(items.name);
    }
}
使用public的数组赋值

其他

调用(Invoke)

Invoke()函数可以在一定时间后以及每一定时间间隔内调用某个方法,要求该方法必须是 0个参数,void返回值的函数。

比如我们有一个函数 LogHello

void LogHello()
{
    Debug.Log("Hello World!");
}

使用 Invoke 来调用该方法:

线性插值(Linear Interplotation)

线性插值是在两个给定值之间找到一个百分比的值。比如在3和5之间找到一个50%处的值,即f4

Vector3 from = new Vector3 (1f, 2f, 3f);
Vector3 to = new Vector3 (5f, 6f, 7f);
Vector3 result = Vector3.Lerp (from, to, 0.75f);     // result = (4, 5, 6)

好久不见!前一阵子由于一些原因暂时搁置了博客,现在重新捡回来!正赶上暑假开始了!为了未来一些挑战所准备,暑期期间决心刷LeetCode算法题,应该也会好好地将刷题期间学到的东西写上来分享,也算是一个对自己的监督!

如果一定要说近期忙的啥,那就贴一个链接出来吧~
NUS Summer Workshop 2019 VR Group6 兽山行 宣传视频
希望大家多多指教!

转载请注明出处,本文永久更新链接:https://blogs.littlegenius.xin/2019/08/03/Unity3D基础脚本编程/

上一篇下一篇

猜你喜欢

热点阅读