創作內容

3 GP

Unity自用紀錄_背包系統

作者:星寒淚│2020-04-12 23:54:54│巴幣:6│人氣:505
前言
我是一個剛挑戰用Unity做手機遊戲的菜鳥,以下程式碼主要為方便自我回顧,因為當初參考的網站對我來說非常難理解,導致自己花了很多時間研究,所以我用自己的方式來講解跟優化,希望可以幫助大家更容易讀懂內容。

*此程式碼是用json儲存遊戲資料

using System.IO;//讀檔
using UnityEngine.UI;//UI介面設計

public class Backpack : MonoBehaviour
{
    string saveString;  //存檔
    string loadString;  //讀檔
    StreamWriter file;
    StreamReader fileReader;
    Backpageobj back = new Backpageobj();//儲存背包資料

    GameObject[] bplnum = new GameObject[25];//編號
    GameObject[] bpl = new GameObject[25];//數量

    void Start()
    {
        fileReader = new StreamReader(System.IO.Path.Combine
        (Application.persistentDataPath, "backpage.json"));//讀取
        loadString = fileReader.ReadToEnd();
        fileReader.Close();
        back = JsonUtility.FromJson<Backpageobj>(loadString);
        //將讀取的string改成int物件型態

        for (int i = 0; i < 25; i++)//尋找格子
        {
            bplnum[i] = GameObject.Find("objlattice").
            transform.GetChild(i).gameObject;
            bpl[i] = GameObject.Find("intlattice").
            transform.GetChild(i).gameObject;
        }
        Objorder();
    }
    public void Objorder()
    {
        int tempnum, temp = 0;//編號,數量

        for (int i = 0; i < 49; i++)//整理包包
        {
            for (int j = i + 1; j < 50; j++)
            {
                if (back.objnum[j] > back.objnum[i])//比後面小就跟後面交換
                {
                    tempnum = back.objnum[i];
                    back.objnum[i] = back.objnum[j];
                    back.objnum[j] = tempnum;

                    temp = back.obj[i];
                    back.obj[i] = back.obj[j];
                    back.obj[j] = temp;
                }
            }
        }

        for (int i = 0; i < 25 ; i++)//25*頁數+1
        {
            if (back.objnum[i] != 0)//有物品才輸出
            {
                if (back.objnum[i] >= 10)
                    bplnum[i].GetComponent<Image>().sprite = Resources.Load
                    <Sprite>("N0" + back.objnum[i]);//編號
                else
                    bplnum[i].GetComponent<Image>().sprite = Resources.Load
                    <Sprite>("N00" + back.objnum[i]);//編號

                bpl[i].GetComponent<Text>().text = back.obj[i] + "";//數量
            }
            else if (back.objnum[i] == 0)
            {
                break;
            }
        }
        saveString = JsonUtility.ToJson(back); //轉成string(json格式)
        file = new StreamWriter(System.IO.Path.Combine
        (Application.persistentDataPath, "backpage.json"));
        file.Write(saveString);
        file.Close();
    }
}

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4747768
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

3喜歡★anna88711 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Unity自用紀錄_初次... 後一篇:Unity自用紀錄_綜合...

追蹤私訊切換新版閱覽

作品資料夾

a9983107Lovelive 虹團同好
[虹團PVC開箱]遲來的開箱-POP UP PARADE 櫻坂雫/桜坂しずく,歡迎大家一起來看看更多我要大聲說昨天21:28


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】