unity 初學 知識點記錄

1.軟件內部操作
unity基本上都是通過C#腳本來控制物體的屬性,來達到自己想要的效果。基本上Inspector中的屬性都可以通過腳本來訪問修改,能理解這一點基本上就可以根據自己的想法對物體進行相應的修改,例如:界面的顯示隱藏,顏色大小變化,物體的移動… 而物體的移動可以通過插件(DOTweening)來進行以達到更好的效果。DOTweening插件中常用方法也以隱藏顯示和位移爲主,下面爲部分常用方法

沿X軸移動 transform.DOmoveX(X座標,時間) ,從當前移動到目標
transform.DOmoveX(X座標,時間).from,從目標移動回當前
transform.DOmoveX(X座標,時間).from(true) 目標座標變成相對座標,變成當前目標+X座標
DOLocalMove(new Vectro3(座標,座標,座標),時間)從當前座標移動到指定座標
例子:
public RectTransform panelTransform;
Tweener tweener(對象名) = panelTransform.DOLocalMove(new Vectro3(座標,座標,座標),時間);
tweener.setAutoKILL(false); 關閉自動銷燬,非則動畫執行完會自動銷燬
tweener.paude(); //停止播放
要是的一個物體上綁定的動畫多次播放使用 物體.DOPlayForward();
倒放動畫爲 物體.DOPlayBackward();
paneltweener.SetAutoKill(false); //禁止銷燬動畫
paneltweener.Pause(); //停止播放動畫
//paneltweener.SetDelay(0.5f); //設置動畫延遲播放
//paneltweener.SetEase(Ease.INTERNAL_Zero); //設置動畫運動的模式
//paneltweener.SetLoops(-1); //設置循環播放 (當參數爲-1的時候循環播放;當參數>=0的時候則表示循環的次數;0的時候表示循環一次)
//paneltweener.SetLoops(-1,loopType) //設置循環播放並且設置動畫循環的模式
//paneltweener.PlayForward(); //播放
//paneltweener.PlayBackwards(); //倒放
//paneltweener.OnComplete(OnComplete); //動畫播放完畢後執行,動畫倒放時候不執行
//paneltweener.OnStart(OnStart); //動畫第一次播放時執行
//paneltweener.OnUpdate(OnUpdate); //動畫播放時不斷執行
//paneltweener.OnPlay(OnPlay); //動畫開始播放時執行
//paneltweener.OnStepComplete(OnStepComplete);//動畫播放且倒放都會執行一次,且執行順序先於OnComplete
//paneltweener.OnKill(OnKill); //動畫刪除的時候執行事件
//paneltweener.Kill(true); //刪除動畫且組件會直接到達指定位置 tweener》oncomplete(ontweencomplete)動畫結束觸發事件;
對文字做動畫
//先定義文字
private text text; //要導入UI
text.DOText(“內容”,時間); //逐字顯示,如果原來有文字會逐字覆蓋
text = getcomponent();//修改顏色
text.DOColer(color.red.時間);
text.DOFade(1,3); //1 出現,0小時, 3爲時間
也可以通過直接在物體上添加插件DOTWeen Animation來達到簡單的效果,常用效果有(移動,旋轉,縮放,顏色,震動,隱現,文字…)在這裏插入圖片描述
基本上單個物體動畫可以通過插件,複雜一些的通過腳本。

2.讀取外部消息(txt,圖片)
(a)讀取.txt文件
WWW www = new WWW(file + Application.streamingAssetsPath + (文件名).txt);
yield return www;
string[] dirinfo = www.text.Split(‘n’);//將每一行設爲數字的一個成員,dirinfo[0] 即爲txt的第一行
for (int i = 0; i dirinfo.Length; i++)
{
if (i != 0 && !string.IsNullOrEmpty(dirinfo[i]))
{
Question qu = new Question();

            string[] sss = dirinfo[i].Split(',');//將dirinfo數組的每一組按照',’分隔開,
            for (int j = 0; j  sss.Length; j++)
            {
                Debug.Log(sss[j]);
                if (string.IsNullOrEmpty(sss[j]))
                {
                    index_length = j;
                    break;
                }
            }
            topic.Add(sss[0]);
            _answer.Add(sss[1]);
            optionA.Add(sss[2]);
            optionB.Add(sss[3]);
            optionC.Add(sss[4]);
            optionD.Add(sss[5]);
            else if (index_length == 7)
            {
                xu.Option_C = sss[4];
                xu.Option_D = sss[5];
                xu.Option_E = sss[5];
            }
            else if (index_length == 8)
            {
                xu.Option_C = sss[4];
                xu.Option_D = sss[5];
                xu.Option_E = sss[5];
                xu.Option_F = sss[5];
            }
        }
    }
    yield return new WaitForEndOfFrame();
    foreach (var VARIABLE in topic)
    {
        Debug.Log(VARIABLE);
    }
}

可以通過這種方式將一份TXT文檔的內容通過行數,符號分入一個數組,再通過調用數組,來使用這些內容,可在答題類等程序中使用。

(b)讀取圖片
採用Resource.Load方法讀取,讀取在Unity中Assets下Resources目錄下的資源名,注意不採用後綴名。(意思是Load方法直接在Resources目錄下找資源,路徑已經指定)。
//加載圖片方式1;(圖片要放入在Assets/Resources/目錄下);
Texture2D _tex = (Texture2D)Resources.Load(“Lighthouse”);
然後將 讀取到的圖片賦值到你想要賦值的物體上,在操作物體。
同理可通過 //存儲
File.WriteAllBytes(Application.streamingAssetsPath + “/my/” + Time.time + “.jpg”, imageTytes);
將圖片儲存到外部。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章