久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Unity從青銅 到 王者!只差這篇讓你學(xué)會(huì)Unity中最重要的部分——腳本組件

 敲代碼的小Y 2021-12-01
  • ??腳本概念

  • ??開發(fā)工具

  • ??腳本結(jié)構(gòu)介紹

  • ??腳本的生命周期

  • ??調(diào)試方法

  • ??Unity腳本常用的API

  • ??Unity實(shí)現(xiàn)功能的三部曲

??前言

  • 如果你點(diǎn)進(jìn)來(lái)了,,那么恭喜你看到了一篇關(guān)于Unity中的腳本超級(jí)詳細(xì)的全面介紹??
  • 內(nèi)容干不干,往下看就知道了,!??
  • 本篇博客來(lái)簡(jiǎn)單介紹一下Unity組件中很重要的一種——腳本組件的介紹 ??
  • 幾乎覆蓋了關(guān)于腳本內(nèi)容的大部分,,希望感興趣的小伙伴可以認(rèn)真看完哦??
  • 如果看完學(xué)不會(huì)請(qǐng)順著網(wǎng)線來(lái)咬我??!
在這里插入圖片描述

??腳本

  • 首先讓我們回顧一下上一篇文章中對(duì)Unity中的腳本的簡(jiǎn)單介紹

  • 腳本在Unity中也是一種組件,,在之前的組件介紹文章中已經(jīng)說(shuō)過(guò)

  • 腳本必須要繼承MonoBehaviour,,而且文件名要和類名一致(如果在Unity里更改了C#文件的名稱,在這個(gè)腳本里也要改類名),,不然腳本掛不上游戲?qū)ο蟆?/p>

在這里插入圖片描述

??腳本概念

  • 腳本是附加在游戲物體上用于定義游戲?qū)ο笮袨榈闹噶畲a
  • 腳本腳本就是Unity中寫代碼的東西,!(??小白提醒~)
  • Unity支持三種高級(jí)編程語(yǔ)言:C#JavaScript Boo Script(unity4以前支持的)

??開發(fā)工具

開發(fā)工具指的是需要用來(lái)寫代碼,,寫腳本的東西,!(??小白提醒~)

MonoDevelop

  • unity自帶的腳本編輯器,創(chuàng)建Mono應(yīng)用程序,,適用于Linux、Mac OSX和Windows的集成開發(fā)環(huán)境,,支持C#和JavaScript等
  • 這款編輯器應(yīng)該是Unity5.0或者是之前的老版本使用的,,目前是被淘汰了用不到

Visual Studio

  • 微軟公司的開發(fā)工具包,包括了整個(gè)軟件生命周期中需要的大部分工具,,如團(tuán)隊(duì)開發(fā)工具,,集成開發(fā)環(huán)境等等。
  • 在Unity中通過(guò)菜單設(shè)置修改默認(rèn)的腳本編輯器,,Visual Studio 官網(wǎng)下載鏈接在這
在這里插入圖片描述

JetBrains Rider

  • JetBrains Rider 是一款基于 IntelliJ 平臺(tái)和 ReSharper 的跨平臺(tái) .NET IDE,。
  • Rider 支持 .NET 框架、新的跨平臺(tái)框架 .NET Core 和基于 Mono 的項(xiàng)目,。
  • 這使您可以開發(fā)廣泛的應(yīng)用程序,,包括:.NET 桌面應(yīng)用程序、服務(wù)和庫(kù),、Unity 游戲,、Xamarin 應(yīng)用、ASP.NET 和 ASP.NET Core web 應(yīng)用程序,。
  • JetBrains Rider官網(wǎng)下載鏈接在這,,感興趣的可以下載試試,跟VS開發(fā)差不多

??腳本結(jié)構(gòu)介紹

  • 在這里說(shuō)一下Monobehaviour的繼承關(guān)系
  • 腳本—>Monobehaviour—>Behaviour—>Component—>Object
  • 下面是一個(gè)普通腳本的結(jié)構(gòu)介紹
using 命名空間;
public class 類名:MonoBehaviour
{
    void 方法名()
    {
        Debug.Log("調(diào)試顯示信息");
        print("本質(zhì)就是Debug.Log方法");
    }
}
  • 下面是新建一個(gè)腳本打開的樣子,,Start() 方法和 Update() 方法是Unity中新建一個(gè)腳本時(shí)自動(dòng)就有的方法
  • Start() 方法在程序開啟的第一幀執(zhí)行
  • Update() 方法在程序的每一幀都會(huì)執(zhí)行
  • Unity中每一幀是0.02秒

創(chuàng)建腳本有好幾種方法,,這里簡(jiǎn)單介紹兩種

1.Project面板右鍵-> Create-> C# Script

2.在游戲?qū)ο?/span>上點(diǎn)擊Add Component,直接輸入想要?jiǎng)?chuàng)建的腳本名稱就可以了 這樣腳本會(huì)自動(dòng)創(chuàng)建完成并且掛載到剛才點(diǎn)擊的游戲?qū)ο笊厦?/strong>


??腳本的生命周期

  • 說(shuō)道腳本,,自然要談一談Unity中的腳本生命周期啦,。

  • 因?yàn)槲覀兯鶎懙拇a都要有一個(gè)執(zhí)行順序,才能有條不紊的執(zhí)行我們需要讓程序執(zhí)行的事情,聽起來(lái)還有些繞口~

  • 類似Android中的Activity也有自己的生命周期

  • 先來(lái)看一張挺長(zhǎng)的圖,,這張圖幾乎涵蓋了腳本的所有方法執(zhí)行的順序啦~

看完了圖是不是感覺有點(diǎn)慌,,有的小伙伴就要說(shuō)啦:這個(gè)圖的方法那么多,看著就頭大啦,,看不明白~

那不要擔(dān)心,,我們今天主要講的是Unity腳本生命周期的九大回調(diào),也是腳本中最常用到的方法了 想讓回調(diào)函數(shù)執(zhí)行有個(gè)前提,,就是  腳本必須以組件的方式掛載到場(chǎng)景中某一個(gè)游戲?qū)ο笊砩?/span>

  • 九大回調(diào)說(shuō)的就是就是下面圖中這九個(gè)方法啦
  • 三種Update都是每幀執(zhí)行一次
  • FixedUpdate一般用于表現(xiàn)物理效果的時(shí)候使用會(huì)比Update效果好
  • LateUpdate在相機(jī)腳本上使用較好,,因?yàn)橄鄼C(jī)可以在Update執(zhí)行之后運(yùn)行,不會(huì)出現(xiàn)畫面Bug的現(xiàn)象

其中他們的執(zhí)行順序:Awake——>OnEnable——>Start——>FixedUpdate——>Update——>LateUpdate——>OnGUI——>OnDisable——>OnDestroy  

  • 如果有多個(gè)腳本中同時(shí)在Awake()或Start()中寫了方法,,哪一個(gè)腳本中的先執(zhí)行呢,?

這個(gè)問題需要考慮,不然的話代碼中會(huì)出現(xiàn)一個(gè)時(shí)效出錯(cuò),,空引用之類的錯(cuò)誤

這里告訴大家一個(gè)辦法,,就是下面這套流程??梢栽谙聢D面板上將腳本的先后順序添加上,,程序就會(huì)按照我們?cè)O(shè)置的順序來(lái)執(zhí)行啦 如果沒有設(shè)置這個(gè),那不同腳本先后執(zhí)行速度就是隨機(jī)的了,,不過(guò)AwakeStart也都是在第一幀執(zhí)行的

  • Edit->Project Settings->Script Execution Order

??調(diào)試方法

Unity編輯器調(diào)試

在腳本代碼中用打印方法調(diào)試Debug.Log()或者print()進(jìn)行打印log調(diào)試

使用Visual Studio調(diào)試

調(diào)試步驟:

  1. 在可能出錯(cuò)的行添加斷點(diǎn)
  2. 啟動(dòng)調(diào)試
  3. 在Unity中Play場(chǎng)景
  4. 在vs中按F11逐條調(diào)試
  5. 調(diào)試完畢按F5退出調(diào)試
在這里插入圖片描述

也可以在調(diào)試時(shí)右鍵–>快速監(jiān)視,,在快速監(jiān)視面板便捷的調(diào)試和查看數(shù)據(jù)。還可以在即時(shí)窗口輸入代碼進(jìn)行調(diào)試

因?yàn)?strong style="font-weight: bold;color: black;">Update和其他方法不同,,它是逐幀運(yùn)行的,,所以在調(diào)試時(shí)需要單幀調(diào)試

  • 步驟:?jiǎn)?dòng)調(diào)試->運(yùn)行場(chǎng)景->暫停游戲->加斷點(diǎn)->單幀執(zhí)行->結(jié)束
在這里插入圖片描述

??Unity腳本常用的API

閱讀編程資料時(shí)經(jīng)常會(huì)看到API這個(gè)名詞,網(wǎng)上各種高大上的解釋估計(jì)放倒了一批初學(xué)者,。

API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),,目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無(wú)需訪問源碼,,或理解內(nèi)部工作機(jī)制的細(xì)節(jié),。——百度百科

網(wǎng)上關(guān)于API的介紹有一大堆,,大多數(shù)還舉了例子介紹 其實(shí)把API看成一個(gè)使用文檔就得了~哪來(lái)這么多事

既然介紹完了腳本,,那就順帶介紹幾種腳本常用的API吧,可以先來(lái)看一下Unity的核心類圖(圖片上網(wǎng)上我能找到的最清晰的了,,雖然還是有些模糊~)

GameObject(游戲?qū)ο?

GameObject游戲?qū)ο螅?span style="font-size:18px;color:#43cd80;">GameObject提供了添加,、設(shè)置游戲?qū)ο螅檎?、銷毀游戲?qū)ο蟮墓δ?下圖是GameObject的屬性參數(shù),。下面使用代碼示例來(lái)學(xué)習(xí)一下

void Start()
{
Debug.Log(gameObject.activeSelf);//當(dāng)前游戲?qū)ο蟮募せ顮顟B(tài)
gameObject.SetActive(false);//設(shè)置當(dāng)前對(duì)象的激活狀態(tài)
gameObject.SetActive(!gameObject.activeSelf);//設(shè)置當(dāng)前游戲?qū)ο蟮募せ顮顟B(tài)為當(dāng)前狀態(tài)的反向狀態(tài)

Debug.Log(gameObject.name);//獲取當(dāng)前對(duì)象名字
Debug.Log(gameObject.tag);//獲取當(dāng)前對(duì)象標(biāo)簽
Debug.Log(gameObject.layer);//獲取當(dāng)前對(duì)象層

Light mylight = gameObject.GetComponent(type:"Light"as Light;
mylight = gameObject.GetComponent(typeof(Light))as Light;

mylight = gameObject.GetComponent<Light>();//獲取當(dāng)前游戲?qū)ο蟮慕M件
mylight = gameObject.AddComponent<Light>();//添加一個(gè)組件到游戲?qū)ο笊砩希⒎祷剡@個(gè)組件
---
GameObject lt = GameObject.Find("Directional Light");//通過(guò)名字找到單個(gè)游戲?qū)ο?/span>
GameObject com = GameObject.FindWithTag("Player");//通過(guò)標(biāo)簽找到單個(gè)游戲?qū)ο?/span>
com = GameObect.FindGameObjectWithTag("MainCanmer");

GameObject[] coms = GameObject.FindGameObjectWithTag(MainCanmer);//通過(guò)標(biāo)簽找到多個(gè)游戲?qū)ο?/span>
}

特別要注意的是不同通過(guò)Find找到處于未激活狀態(tài)的對(duì)象Inspector面板上這里未勾選就是未激活的意思,相應(yīng)的在Hierarcht面板上的游戲?qū)ο缶蜁?huì)變成灰色,。

Component(組件)

Component就是組件,,在上篇博客已經(jīng)介紹了,這里再重新介紹下腳本API的使用吧 添加,、獲取和銷毀組件的方法添加組件

GameObject Cube= GameObject.CreatePrimitive(PrimitiveType.Cube);//創(chuàng)建一個(gè)方格
Cube.AddComponent<BoxCollider>();//添加盒形碰撞器組件
Cube.AddComponent<Rigidbody>();//添加剛體組件
Cube.AddComponent<Test>();//添加Test腳本

獲取組件

BoxCollider boxCollider = Cube.GetComponent<BoxCollider>();//獲取盒形碰撞器組件
Rigidbody rigidbody = Cube.GetComponent<Rigidbody>();//獲取剛體組件
Test test= Cube.GetComponent<Test>();//獲取某個(gè)Test腳本

GetComponent
GetComponents

GetComponentInChildren
GetComponentsInChildren

GetComponentInParent
GetComponentsInParent

銷毀組件

//()中的參數(shù)為創(chuàng)建相應(yīng)組件時(shí)的組件名稱
Destroy(boxCollider );//銷毀盒形碰撞器組件
Destroy(rigidbody);//銷毀剛體組件

Transform

Transform組件在上篇介紹組件的博客也說(shuō)過(guò)了,,這里在提一下在腳本使用的API下面來(lái)用代碼示例學(xué)一下Transform的使用

void Start(){
//1.控制游戲?qū)ο蟮淖儞Q
Debug.Log(transform.position);//世界坐標(biāo)
Debug.Log(ransform.localPostion);//本地坐標(biāo)

Debug.Log(transform.eulerAngles);//世界歐拉角
Debug.Log(transform.localEulerAngles);//本地歐拉角

Debug.Log(transform.rotation);//世界旋轉(zhuǎn)(四元數(shù))
Debug.Log(transform.localRotation);//本地旋轉(zhuǎn)(四元數(shù))

//本地縮放
 Debug.Log(transform.localScale);
 //方向
//自身前方的方向向量
Debug.Log(transform.forward);
 //自身右方的方向向量
Debug.Log(transform.right);
//自身上方的方向向量
 Debug.Log(transform.up);

//描述游戲?qū)ο蟮膶蛹?jí)關(guān)系
 //父對(duì)象
Debug.Log(transform.parent);
   //根對(duì)象
Debug.Log(transform.root);

//設(shè)置父物體
transform.parent = lookAtTarget;
//==>
transform.SetParent(lookAtTarget);

 //遍歷所有的子對(duì)象
 foreach (Transform tra in transform)
 {
 Debug.Log(tra);
  }

//遍歷所有的子對(duì)象
for (int i = 0; i < transform.childCount; i++)
{
 Debug.Log(transform.GetChild(i));
 }

 //找當(dāng)前對(duì)象的子對(duì)象
Transform sph = transform.Find("Cylinder/Sphere");
 Debug.Log(sph);
}

private void Update()
    {
        //角色朝自身前方移動(dòng)
        // transform.position += transform.forward * 0.05f;
        // transform.Translate(transform.forward * 0.05f);
 //自轉(zhuǎn)
 transform.Rotate(new Vector3(0,1,0),2,Space.World)
// ==>
 transform.eulerAngles += new Vector3(0,1,0);

transform.Rotate(new Vector3(0,1,0),2,Space.Self);
//==>
transform.localEulerAngles += new Vector3(0,1,0);

//繞某個(gè)點(diǎn)沿某個(gè)軸,旋轉(zhuǎn)
transform.RotateAround(new Vector3(000), new Vector3(010), 5);

transform.LookAt(new Vector3(0,0,0));
transform.LookAt(lookAtTarget);//看向某個(gè)對(duì)象

Vector3(三維向量)

Vector3向量,,在三維坐標(biāo)系中帶有方向和大小的數(shù)據(jù),,下圖介紹了Vector3的屬性參數(shù)下面來(lái)用代碼示例學(xué)一下 Vector3的使用

//創(chuàng)建一個(gè)三維向量
        Vector3 dir = new Vector3(1,2,3);
        //創(chuàng)建一個(gè)二維向量
        Vector2 dir2 = new Vector2(3,3);
        //創(chuàng)建一個(gè)四維向量
        Vector4 dir4 = new Vector4(1,2,3,4);
        
//獲取一個(gè)向量的單位向量
Vector3 normalDir = dir.normalized;
//將當(dāng)前向量變成單位向量
        dir.Normalize();
        //向量的長(zhǎng)度【模】
        float mag = dir.magnitude;
        //模的平方【用來(lái)做向量長(zhǎng)度的對(duì)比】
        float sqrMag = dir.sqrMagnitude;
 // Vector3.forward
        // Vector3.back
        // Vector3.left
        // Vector3.right
        // Vector3.up
        // Vector3.down
        // Vector3.zero
        // Vector3.one       

        Vector3 pointA = Vector3.forward;
        Vector3 pointB = Vector3.right;
        //求兩個(gè)坐標(biāo)的距離
        float dis = Vector3.Distance(pointA, pointB);
 
        Vector3 dirA = Vector3.one;
        Vector3 dirB = Vector3.right;

        //求兩個(gè)向量的夾角
        float angle = Vector3.Angle(dirB, dirA);
        float newAngle = Vector3.Angle(new Vector3(110), Vector3.zero);

      //求兩個(gè)向量的點(diǎn)乘
        float dot = Vector3.Dot(dirA, dirB);

      //求兩個(gè)向量的叉乘【求兩個(gè)向量的法向量】
        Vector3 normal = Vector3.Cross(dirA, dirB);

      //求一個(gè)向量在某個(gè)方向上的投影向量
        Vector3 pro = Vector3.Project(new Vector3(110), Vector3.right);

   //求兩個(gè)向量中間的插值坐標(biāo)
        Vector3.Lerp(new Vector3(100), new Vector3(500), 0.5f);

//由快到慢運(yùn)動(dòng)過(guò)去
        transform.position = Vector3.Lerp(transform.position, new Vector3(500), 0.03f);
 

Quaternion(四元數(shù)旋轉(zhuǎn))

Quaternion四元數(shù)本質(zhì)上是一種高階復(fù)數(shù),,是一個(gè)四維空間,,相對(duì)于復(fù)數(shù)的二維空間。在Unity里,,tranform組件有一個(gè)變量名為Rotation,,它的類型就是四元數(shù)。用于在Unity中控制旋轉(zhuǎn)的一種方式

下面來(lái)用代碼示例學(xué)一下 Quaternion的使用

public class ReadQuaternion : MonoBehaviour
{
    
    public float turnSpeed = 3f;
    public Transform target;
    
  void Start()
    {
        //空旋轉(zhuǎn)【相當(dāng)于歐拉角的(0,,0,,0)】
        Debug.Log(Quaternion.identity);
        //將當(dāng)前角色的旋轉(zhuǎn)設(shè)置空旋轉(zhuǎn)
        transform.rotation = Quaternion.identity;
    }
    void Update()
    {
        // transform.LookAt(target);
        //插值旋轉(zhuǎn)
        // transform.rotation 起點(diǎn)四元數(shù)

        //玩家指向敵人的方向向量
        Vector3 dir = target.position - transform.position;
        //目標(biāo)四元數(shù)
        Quaternion targetQua = Quaternion.LookRotation(dir);
        
        // transform.position = Vector3.Lerp(transform.position,Vector3.right*5,0.02f);

        //插值轉(zhuǎn)身
        transform.rotation = Quaternion.Lerp(transform.rotation, targetQua, 0.02f * turnSpeed);
    }
}

Time(時(shí)間)

首先介紹兩個(gè)概念:現(xiàn)實(shí)時(shí)間游戲時(shí)間大多數(shù)Time類都是依賴于游戲時(shí)間的。現(xiàn)實(shí)時(shí)間也就是不依賴于程序內(nèi)部,,就算程序暫停也會(huì)繼續(xù)計(jì)算的真實(shí)時(shí)間,,而游戲時(shí)間是基于程序內(nèi)部的,,可以自行調(diào)整,。我們這里用的都是游戲時(shí)間下面來(lái)用代碼示例學(xué)一下 Time 類的使用

public class ReadTimeAndMathf : MonoBehaviour
{

    //時(shí)間縮放
    public float timeScale = 1f;

    public float moveSpeed = 2;

    private void FixedUpdate()
    {
        Debug.Log(Time.fixedDeltaTime);
        transform.position += Vector3.forward * Time.fixedDeltaTime * moveSpeed;
    }

    void Update()
    {
        // Debug.Log(Time.time);//游戲過(guò)來(lái)多長(zhǎng)時(shí)間
        Debug.Log(Time.deltaTime);//每幀的時(shí)間間隔

        //調(diào)整時(shí)間縮放
        Time.timeScale = timeScale;

        // transform.position += Vector3.forward * Time.deltaTime * moveSpeed;
        // transform.position = Vector3.Lerp(transform.position,Vector3.forward * 5 ,Time.deltaTime * moveSpeed);
    }
}

Input鍵盤輸入方法

在游戲中我們經(jīng)常要用到按某個(gè)鍵來(lái)執(zhí)行某件事,就比如按A鍵開炮,,空格鍵跳躍等等,。下面就來(lái)簡(jiǎn)單介紹一下怎樣使用 鍵盤輸入方法

public class SimplePlayerMove : MonoBehaviour
{
    [Header("炮彈")]
    public GameObject bullet;
    
    public float moveSpeed = 3f;
    public float turnSpeed = 3f;

    private float hor, ver;
    
void OldUpdate(){
bool downA = Input.GetKeyDown(KeyCode.A);

        if (Input.GetKeyDown(KeyCode.A))
        {
            Debug.Log("按下了A鍵");
        }

        if (Input.GetKeyUp(KeyCode.A))
        {
            Debug.Log("松開了A鍵");
        }

        if (Input.GetKey(KeyCode.Space))
        {
            Debug.Log("按住了空格鍵");
        }
        
if(Input.GetKey(KeyCode.W))//前進(jìn)
{
transform.position +=transform.forward * Time.deltaTime * moveSpeed;
}
if(Input.GetKey(KeyCode.S))//后退
{
transform.position -=transform.forward * Time.deltaTime * moveSpeed;
}
 if (Input.GetKey(KeyCode.A))//左轉(zhuǎn)
        {
            transform.eulerAngles -= Vector3.up * turnSpeed;
        }
  if (Input.GetKey(KeyCode.D))//右轉(zhuǎn)
        {
            transform.eulerAngles += Vector3.up * turnSpeed;
        }
}
----
void Update()
  {
    hor = Input.GetAxis("Horizontal");
    ver = Input.GetAxis("Vertical");
//transform.position += new Vector3(hor, 0, ver) *Time.deltaTime * moveSpeed;   
       //前后移動(dòng)
        transform.position += ver * transform.forward * Time.deltaTime * moveSpeed;
        //左右轉(zhuǎn)身
        transform.eulerAngles += hor * Vector3.up * turnSpeed;
  }
}

Input鼠標(biāo)輸入方法

說(shuō)完了鍵盤輸入,自然還有鼠標(biāo)輸入啦,,那下面就來(lái)介紹一下 鼠標(biāo)輸入方法


void KeyUpdate()
{

        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("按下了鼠標(biāo)左鍵");
        }
        
        if (Input.GetMouseButtonUp(0))
        {
            Debug.Log("松開了鼠標(biāo)左鍵");
        }
        
        if (Input.GetMouseButton(0))
        {
            Debug.Log("按住了鼠標(biāo)左鍵");
        }
}
---
void Update()
{
float hor = Input.GetAxis("Horizontal");
//Debug,。Log( if (Input.GetButtonDown("Fire"));
        {
            Debug.Log("按住了開火鍵");

            // GameObject crtPlayer = Instantiate(playerPrefab);
            GameObject crtPlayer = Instantiate(playerPrefab, Vector3.forward, Quaternion.identity);
        })
 if (Input.GetButtonDown("Fire"))
        {
            Debug.Log("按住了開火鍵");

            // GameObject crtPlayer = Instantiate(playerPrefab);
            GameObject crtPlayer = Instantiate(playerPrefab, Vector3.forward, Quaternion.identity);
        }
}



??Unity實(shí)現(xiàn)功能的三部曲

  1. 找到要操作的游戲?qū)ο蠡蛩慕M件
  2. 找到功能所對(duì)應(yīng)的組件
  3. 設(shè)置組件的屬性,或調(diào)用組件提供的方法,,從而實(shí)現(xiàn)功能

注意

  1. 當(dāng)程序出現(xiàn)異常,,程序會(huì)自動(dòng)暫停,后邊的代碼就不會(huì)執(zhí)行了
  2. 游戲運(yùn)行時(shí),,所有的操作在停止游戲后,,都會(huì)恢復(fù)
  3. 要真的去做某項(xiàng)操作時(shí),不要在游戲運(yùn)行時(shí)操作
在這里插入圖片描述

??總結(jié)

  • 好了,,關(guān)于腳本方面呢我們已經(jīng)全部介紹完了,,最后還簡(jiǎn)單提了一下Unity實(shí)現(xiàn)功能的三部曲大家都學(xué)會(huì)了吧,不用順著網(wǎng)線來(lái)咬我了~
  • 其實(shí)整個(gè)游戲程序?qū)崿F(xiàn)功能的思路就是這樣,先找到這個(gè)游戲?qū)ο?,然后利用腳本寫代碼讓他做相應(yīng)的事情,。
  • 所有的游戲?qū)ο笥袟l不紊的執(zhí)行他們?cè)摳傻氖虑椋敲匆粋€(gè)游戲程序也就自然而然的運(yùn)行起來(lái)了
  • 如果你是從之前寫的幾篇博客完整看到這里,,那么我之前寫的那篇坦克大戰(zhàn)的小游戲也就可以自己做了

Unity中從倔強(qiáng)青銅上榮耀王者,,看完這篇是不是有手就行~

  • 其實(shí)做一個(gè)小游戲也沒有那么難嘛~嘿嘿
  • 不過(guò)關(guān)于Unity中UI方面還沒有介紹,大家可以在網(wǎng)上搜一下大佬的文章看看呀,,后續(xù)有時(shí)間會(huì)更UI方面的知識(shí)點(diǎn)的~

心動(dòng)不如行動(dòng),,還不趕緊一鍵三連,然后收藏夾吃灰,?

祝大家早日上榮耀王者,!

下篇再見啦~さようなら

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多