❤❤Fungus新課程即將發布,快寫問卷拿優惠❤❤

2017年10月21日 星期六

新手如何很清楚的問程式問題?

新手如何很清楚的問程式問題?

Q:我問的問題不夠清楚嗎?
A:有時候新手以為自己問得很清楚了,但其實給的資料不夠詳實,這時候別人想要幫你的話也很難


Q:問問題之前我可以做些什麼?
A:可以先自己試著解決問題。如果你是照著範例自己打程式碼,然後出現了找不到原因的錯誤的話,很可能程式碼打錯了而你沒有發現。建議可以上網搜尋 文字比對 軟體,比對一下自己的程式碼跟範例程式碼有何不同,往往是差一個字母就差很多,比方大小寫打錯,或OnMouseEnter 打成 OnMouseCenter,RigidBody打成RigidBody2D之類的


Q:那我應該怎麼問問題?
A:少用代名詞,盡量描述具體一點,而且要有程式碼才好幫你判斷,盡量像是以下的範例

BBB你好,我看到你的CCC程式教學,照著做以後在Console控制台(註1) 發現有DDD錯誤訊息,以下是相關的程式碼跟截圖

(相關的程式碼)
(相關的程式碼)
(相關的程式碼)
(inspector視窗的截圖)

(Fungus的話 需要加上Block裡相關指令的截圖)
(Fungus的話 需要加上Block裡相關指令的截圖)
(Fungus的話 需要加上Block裡相關指令的截圖)

我的Line跟微信帳號

我覺得可能是EEE的問題,因為DDD錯誤訊息上網查的意思是FFF,而且執行的時候都會有某某BUG

Unity版本是:201X.X.X (註2)
Fungus的版本:YY  (在Asset\Fungus\Docs\CHANGELOG 裡有寫)
作業系統版本:ZZ
=================

實際的例子:
(其中的程式碼可以找 程式碼分享 的網站去貼程式碼 )
(如果是在Youtube裡無法傳圖片的話,可以點頻道簡介加line傳圖)


學長你好,我看了你的怪物攻擊教學,做到影片第8分7秒指定GameObject的時候,底下會有紅線,錯誤訊息是:
CS0029 無法將類型 'UnityEngine.GameObject[]' 隱含轉換成 'UnityEngine.GameObject'

以下是相關的程式碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class HP : MonoBehaviour {
    public Text HPText;

    public float hp;
void Start () {
        DisplayHP();
    }

    public void Sleep() {
        hp += 10;
        DisplayHP();
    }

    public void DisplayHP() {
        HPText.text = hp.ToString("#");
    }

    public void BeAttacked() {
        hp -= 10.6f;
        DisplayHP();
        GameObject player = GameObject.FindGameObjectsWithTag("player");
    } 
}


有上色的程式碼連結:https://pastebin.com/3ueCB0rJ

我覺得可能是Tag打錯的問題,但是我都檢查過了,Tag沒打錯,相關物件也有上對Tag,不知道是哪裡出了問題

Unity版本是:2018.3.f1
作業系統:win 10

=================

順便解答一下這個範例問題:
應該寫成:GameObject.FindGameObjectWithTag("player");
因為多打了一個s會變成FindGameObjectsWithTag,這樣回傳的是GameObject陣列,所以會出現無法轉換類型的問題

同樣的,如果這是照著範例程式碼做的練習的話,用文字比對的軟體就能發現多打一個S了

註1:Console視窗的快速鍵  Ctrl + Shift + C

註2:Unity版本編號會寫在視窗的標題列,2017年以後的版本編號都包含年份,如果版本是2019.1.3,請不要只寫1.3,因為也有2018.1.3,2017.1.3,容易造成誤解

註2補充:
如果你的版本號碼裡包含a或b ,比方2019.3.0a5,然後你又一直找不到哪裡出了問題的話,建議先備份整個專案資料夾後,再安裝舊版Unity,然後用舊版Unity開專案試試。因為a的話代表alpha版,b的話代表beta版,是比較不穩定的Unity版本,可能本身就很多bug,不適合拿來做正式的專案

沒有留言:

張貼留言

留言給作者加油打氣