2019年1月12日 星期六

Unity Write Excel

因由Unity 發佈後,無法建立Excle原因,主要是Dll少檔案

Excel 全部相關DLL下載

提取码:0xso

備用載點

----------------------------------------------------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Excel;
using OfficeOpenXml;
using System.IO;

public class TextWriteExcel : MonoBehaviour {

 public string filePath = @"C:\Users\JohnLin\Desktop\Result\CKIP.xlsx";

 private void Start() {
  WriteExcel();
 }

 public void WriteExcel(){
  
  FileInfo file = new FileInfo(filePath);
  
  if(file.Exists){

   file.Delete();
   file = new FileInfo(filePath);
  }

  ExcelPackage package = new ExcelPackage(file);
  ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Test");

  worksheet.Cells["A2"].Value = "ID";

  package.Save();
  
 }
}

資料來源: https://blog.csdn.net/yupu56/article/details/50580277

------ 結果圖 ------

2019年1月11日 星期五

Unity c# read Xml

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;

public class ReadXml : MonoBehaviour {

 Hashtable ht = new Hashtable();
 string filePath = @"C:\Users\JohnLin\Desktop\CKIP\xmlcorpus_004.xml";

 XmlDocument xmlDocument = new XmlDocument();

 int sentenceLenght = 0;

 private void Start() {
  
  xmlDocument.Load(filePath);
  XmlNodeList genre = xmlDocument.SelectNodes("//genre"); 

  senterce();
 } 

 ///
 ///xml 句子
 ///
 private void senterce (){
  
  XmlNodeList topM = xmlDocument.SelectNodes("//text");  // 節點

  foreach (XmlElement elements in topM)
  {
   while(true){
    if(elements.GetElementsByTagName("sentence")[sentenceLenght] != null){ //  sentence 節點
     Debug.Log(elements.GetElementsByTagName("sentence")[sentenceLenght].InnerText);
     break;
    }
   }
  }
 }
}


------- XML -------

<corpus>
    <article>
        <genre>散文</genre>
        <style>記敘</style>
        <mode>written</mode>
        <topic>其他文學創作</topic>
        <medium>視聽媒體</medium>
        <author>
            <name>周文仁</name>
            <sex>男</sex>
            <nationality>中華民國</nationality>
            <nativelang>中文</nativelang>
        </author>
        <publisher />
        <publishlocation />
        <publishdate>1994</publishdate>
        <edition />
        <title />
        <text>
            <sentence>生活(Na) 不過(Cbb) 就(D) 是(SHI) 一個個(Neqa) 的(DE) 
        </text>
    </article>
</corpus>

------結果圖------

2019年1月1日 星期二

長詞優先法與詞位標籤-更新版(更新版)

----MySQL Script(語料庫)------
using System.Collections.Generic;
using System.Data;
using System;
using MySql.Data.MySqlClient;
using System.Text;

namespace MySQL
{
    public class MySQL
    {
        public static MySqlConnection mySqlConnection;

        // DataBase Ip;
        private static string HOST = "163.15.198.171";
        public static string HOST_TYPE
        {
            set { HOST = value; }
            get { return HOST; }
        }

        // DataBase user Id
        private static string ID = "gsp40213";
        public static string ID_TYPE
        {
            set { ID = value; }
            get { return ID; }
        }

        // DataBase password
        private static string PASSWORD = "******";
        public static string PASSWORD_TYPE
        {
            set { PASSWORD = value; }
            get { return PASSWORD; }
        }

        // DataBase Name
        private static string DATABASE = "corpus2";
        public static string DATABASE_TYPE
        {
            set { DATABASE = value; }
            get { return DATABASE; }
        }

        private static string PORT = "****";
        public static string PORT_TYPE
        {
            set { PORT = value; }
            get { return PORT; }
        }

        // 連線結果
        public static string RESULT = "";

        //  Connect to SQL
        public static void OpenSqlConnection(string connction)
        {
            try
            {
                mySqlConnection = new MySqlConnection(connction);
                mySqlConnection.Open();
                RESULT = mySqlConnection.ServerVersion;
            }
            catch
            {
                RESULT = "無法連接資料庫";
            }
        }

        // Close Sql
        public static void closeSqlConnection()
        {
            mySqlConnection.Close();
            mySqlConnection.Dispose();
            mySqlConnection = null;
        }

        // SQL Query
        public static void DOQUERY(string sqlQuery)
        {
            IDbCommand dbcommand = mySqlConnection.CreateCommand();
            dbcommand.CommandText = sqlQuery;
            IDataReader reader = dbcommand.ExecuteReader();
            reader.Close();
            reader = null;
            dbcommand.Dispose();
            dbcommand = null;
        }

        // Get DataSet
        public static DataSet GetDataSet(string sqlString)
        {
            DataSet ds = new DataSet();

            try
            {
                MySqlDataAdapter da = new MySqlDataAdapter(sqlString, mySqlConnection);
            }
            catch (Exception e)
            {
                throw new Exception("SQL:" + sqlString + "\n");
            }
            return ds;
        }

        /// 
        /// string to uft8
        /// message: sentence
        /// 
        /// 
        /// 
        public static string STRING_UTF8(string message)
        {
            UTF8Encoding encoder = new UTF8Encoding();
            byte[] bytes = Encoding.UTF8.GetBytes(message);
            string utf8ReturenString = encoder.GetString(bytes);

            return utf8ReturenString;
        }

        /// 
        /// INQUIRE_DATABASE
        ///  * dataBaseTitle : DataBaseName 
        ///  * dataBaseTitle : DataBaseName 
        ///  * numberingType : 0(Message)、1(Words)、2(Mark)、3(Words2)、4(Mark2)、5(Lexical) 
        ///  * message: message 
        /// 
        /// 
        /// 
        /// 
        /// 
        public static string INQUIRE_DATABASE(string dataBaseTitle, int numberingType, string message)
        {
            string sqlText = "select * from " + dataBaseTitle + " where Message='" + message + "'";

            string str = "";
        
            MySqlCommand cmd = new MySqlCommand(sqlText, mySqlConnection);
            MySqlDataReader data = cmd.ExecuteReader();

            while (data.Read())
            {
                try
                {
                    str = data[numberingType].ToString();
                }
                finally { }
            }
            data.Close();

            return str;
        }

        /// 
        /// 詞性標記顯示
        /// words: dataBase table[1]
        /// 
        /// 
        /// 
        public static string wordsMark(string words)
        {
            string str = "";

            switch (words.ToString())
            {
                case "A":
                    str = "非謂形容詞";
                    break;
                case "Caa":
                    str = "對等連接詞";
                    break;
                case "Cab":
                    str = "連接詞";
                    break;
                case "Cba":
                    str = "連接詞";
                    break;
                case "Cbb":
                    str = "關聯連接詞";
                    break;
                case "Da":
                    str = "數量副詞";
                    break;
                case "Dfa":
                    str = "動詞前副詞";
                    break;
                case "Dfb":
                    str = "動詞後副詞";
                    break;
                case "Di":
                    str = "時態標記";
                    break;
                case "Dk":
                    str = "句副詞";
                    break;
                case "D":
                    str = "副詞";
                    break;
                case "Na":
                    str = "普通名詞";
                    break;
                case "Nb":
                    str = "專有名詞";
                    break;
                case "Nc":
                    str = "地方詞";
                    break;
                case "Ncd":
                    str = "位置詞";
                    break;
                case "Nd":
                    str = "時間詞";
                    break;
                case "Neu":
                    str = "數量定詞";
                    break;
                case "Nes":
                    str = "特指定詞";
                    break;
                case "Nep":
                    str = "指代定詞";
                    break;
                case "Neqa":
                    str = "數量定詞";
                    break;
                case "Neqb":
                    str = "數量定詞(後置)";
                    break;
                case "Nf":
                    str = "量詞";
                    break;
                case "Ng":
                    str = "後置詞";
                    break;
                case "Nh":
                    str = "代名詞";
                    break;
                case "Nv":
                    str = "名物化動詞";
                    break;
                case "I":
                    str = "感嘆詞";
                    break;
                case "P":
                    str = "介詞";
                    break;
                case "T":
                    str = "語助詞";
                    break;
                case "VA":
                    str = "動作不及物動詞";
                    break;
                case "VAC":
                    str = "動作使動動詞";
                    break;
                case "VB":
                    str = "動作類及物動詞";
                    break;
                case "VC":
                    str = "動作及物動詞";
                    break;
                case "VCL":
                    str = "動作接地方賓語動詞";
                    break;
                case "VD":
                    str = "雙賓動詞";
                    break;
                case "VE":
                    str = "動作句賓動詞";
                    break;
                case "VF":
                    str = "動作謂賓動詞";
                    break;
                case "VG":
                    str = "分類動詞";
                    break;
                case "VH":
                    str = "狀態不及物動詞";
                    break;
                case "VHC":
                    str = "狀態使動動詞";
                    break;
                case "VI":
                    str = "狀態類及物動詞";
                    break;
                case "VJ":
                    str = "狀態及物動詞";
                    break;
                case "VK":
                    str = "狀態句賓動詞";
                    break;
                case "VL":
                    str = "狀態謂賓動詞";
                    break;
                case "V_2":
                    str = "不及物連接動詞";
                    break;
                case "DE":
                    str = "狀態感嘆詞";
                    break;
                case "SHI":
                    str = "不及物狀態動詞";
                    break;
                case "FW":
                    str = "外文";
                    break;
                case "COMMACATEGORY":
                    str = "逗號";
                    break;
                case "DASHCATEGORY":
                    str = "破折號";
                    break;
                case "ETCCATEGORY":
                    str = "刪節號";
                    break;
                case "EXCLAMATIONCATEGORY":
                    str = "感嘆號";
                    break;
                case "PARENTHESISCATEGORY":
                    str = "括號";
                    break;
                case "PAUSECATEGORY":
                    str = "頓號";
                    break;
                case "PERIODCATEGORY":
                    str = "句號";
                    break;
                case "QUESTIONCATEGORY":
                    str = "問號";
                    break;
                case "SEMICOLONCATEGORY":
                    str = "分號";
                    break;
                case "SPCHANGECATEGORY":
                    str = "雙直號";
                    break;
            }
            return str;
        }
    }
}


---------SegmentationSymbolTool Script (斷字功能)----------
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace SegmentationSymbolTool
{
    public class SegmentationSymbol2
    {
        // 斷詞標記括號
        private string[] specialSymbol = new string[] { "(", ")" };
        // 斷字狀態
        private string statusBroken;

        // 刪除特殊符號
        public string delectSymbol(string userMessage)
        {
            string strs = userMessage;

            for (int x = 0; x < specialSymbol.Length; x++)
                strs = strs.Replace(specialSymbol[x], " ");

            return strs;
        }

        /// 
        /// 斷字字數
        ///  status: sentence Lenght 
        /// 
        /// 
        private void status_conter(int status)
        {
            statusBroken = "";

            for (int x = 0; x <= status; x++)
                statusBroken += @"\S";
        }

        /// 
        /// 刪除訊息
        /// message: sentence
        /// status: Hyphenation state
        /// 
        /// 
        /// 
        /// 
        public string delectWord(string message, int status)
        {
            string str = message;

            return str.Remove(status).ToString();
        }

        /// 
        /// 斷字狀態
        /// message: sentence
        /// status: Hyphenation state
        /// 
        /// 
        /// 
        /// 
        public List brokenSatus(string message, int status)
        {
            status_conter(status);

            List match = new List();
            MatchCollection splitResult = Regex.Matches(message, statusBroken, RegexOptions.IgnoreCase);

            foreach (Match test in splitResult)
                match.Add(test);

            return match;
        }

        /// 
        /// 組合處理
        /// message: sentence
        /// int: Hyphenation state
        /// 
        /// 
        /// 
        /// 
        public List delect_Word_Combination(string message, int status)
        {
            status_conter(status);

            string str = message;
            List match = new List();
            List stringList = new List();

            MatchCollection splitResult = Regex.Matches(str, statusBroken, RegexOptions.IgnoreCase);
            foreach (Match test in splitResult)
                match.Add(test.ToString());
            foreach (string strs in match)
            {
                stringList.Add(str.Replace(strs, ""));

                return stringList;
            }

            return stringList;
        }

        /// 
        /// 斷字處理
        /// message: sentence
        /// status: Hyphenation state
        /// 
        /// 
        /// 
        /// 
        public List delect_oneWord(string message, int status)
        {
            status_conter(status);

            string str = message;
            List match = new List();
            List stringList = new List();

            MatchCollection splitResult = Regex.Matches(str, statusBroken, RegexOptions.IgnoreCase);
            foreach (Match test in splitResult)
                match.Add(test.ToString());
            foreach (string strs in match)
                stringList.Add(str.Replace(strs, ""));

            return stringList;
        }
    }
}


------LongWordsFirst2 Scrit (長詞優先法)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Text.RegularExpressions;
using System;

public class LongWordsFirst2 : MonoBehaviour
{
    // 斷詞工具
    private SegmentationSymbolTool.SegmentationSymbol2 segmentationSybolTool = new SegmentationSymbolTool.SegmentationSymbol2();

    // 斷字系統資料表
    private static string dataBasetitle = "glossary";

    // 顯示結果
    private string resultMessage;
    public string resultMessageType
    {
        get { return resultMessage; }
    }

    // 使用者輸入句子
    private string message = "";
    public  string messageType
    {
        set { message = value; }
        get { return message; }
    }

    // 正向長詞優先
    public string logeWordForward;

    // 反向長詞優先
    public string logeWordReverse;
    public string logeWordReverseType
    {
        get { return logeWordReverse; }
    }

    // 正向長詞優先長度, 反向長詞優先長度, 組合長度
    private int logeWordForwadLenght, logeWordReverseLenght;

    // 正向長詞優先結果
    private List logeWordForwardFunctionList = new List();
    public List logeWordForwardFunctionListType
    {
        get { return logeWordForwardFunctionList; }
    }

    // 反向長詞優先結果
    private List logeWordReverseFunctuinList = new List();

    // 正向長詞優先標記結果
    private List logeWordForwardLexicalFunctionList = new List();
    public List logeWordForwardLexicalFunctionListType
    {
        get { return logeWordForwardLexicalFunctionList; }
    }

    // 反向長詞優先結果
    public List logeWordReverseLexicalFunctionList = new List();
    public List logeWordReverseLexicalFunctionListType
    {
        get { return logeWordReverseLexicalFunctionList; }
    }

    // 反向長詞方向校正結果
    public List logeWordReverseCorrectionList = new List();
    public List logeWordReverseCorrectionListType
    {
        get { return logeWordReverseCorrectionList; }
    }

    // 正向長詞優先詞性變化1
    private List logeWordForwardMark1List = new List();
    public List logeWordForwardMark1Type
    {
        get { return logeWordForwardMark1List; }
    }

    // 反向長詞優先詞性變化1
    private List logeWordReverseMark1List = new List();
    public List logeWordReverseMark1Tpye
    {
        get { return logeWordReverseMark1List; }
    }

    // 打開資料庫
    public void OpenDataBase()
    {
        string connectionString = string.Format("Server = {0}; Database = {1}; UserID = {2}; Password = {3}; Port = {4};", MySQL.MySQL.HOST_TYPE, MySQL.MySQL.DATABASE_TYPE, MySQL.MySQL.ID_TYPE, MySQL.MySQL.PASSWORD_TYPE, MySQL.MySQL.PORT_TYPE);
        MySQL.MySQL.OpenSqlConnection(connectionString);
    }

    /// 
    /// 關閉資料庫
    /// 
    public void closeDataBase()
    {
        MySQL.MySQL.closeSqlConnection();
    }

    /// 
    /// 切字準備
    /// 優先執行
    /// 
    public void cuttingReady()
    {
        logeWordForward = message;
        logeWordReverse = message;

        logeWordForwadLenght = logeWordForward.Length;
        logeWordReverseLenght = logeWordReverse.Length;
       
        // 清除List
        logeWordForwardFunctionList.Clear();
        logeWordReverseFunctuinList.Clear();
        logeWordForwardLexicalFunctionList.Clear();
        logeWordReverseLexicalFunctionList.Clear();
        logeWordReverseCorrectionList.Clear();
        logeWordForwardMark1List.Clear();
        logeWordReverseMark1List.Clear();
      
        // 執行正向長詞優先
        StartCoroutine(loneWordForwardFunction());

        // 執行反向長詞優先
        StartCoroutine(longWordReverseFunction(0));

        // 正向長詞優先詞位標記
        StartCoroutine(logeWordForwardLexicalFunction(logeWordForwardFunctionList, logeWordForwardLexicalFunctionList));

        // 反向長詞優先方校校正
        StartCoroutine(logeWordReverseCorrectionFunction());

        // 反向長詞優先詞位標記
        StartCoroutine(logeWordForwardLexicalFunction(logeWordReverseCorrectionList, logeWordReverseLexicalFunctionList));

        // 正向長詞優先詞性變化1
        StartCoroutine(logeMakesFunction());
    }

    /// 
    /// 檢查沒有數據
    /// Message: contence
    /// Database No Data
    /// 
    /// 
    /// 
    /// 
    private string inspection(string message, List list)
    {
        string str = message;

        foreach (string str1 in list)
        {
            str = str.Replace(str1, "");
        }

        return str;
    }

    /// 
    /// 反向長詞優先校正
    /// 
    IEnumerator logeWordReverseCorrectionFunction()
    {
        while (true)
        {
            if (logeWordReverse.Equals(""))
            {
                for (int x = logeWordReverseFunctuinList.Count-1; x >= 0; x--)
                    logeWordReverseCorrectionList.Add(logeWordReverseFunctuinList[x]);
                break;
            }

            yield return new WaitForSeconds(0.5f);
        }
    }

    /// 
    /// 詞位標籤
    /// longWord: positive longWord / reverse longWord
    /// LexicalResult: positive longWord Result / reverse longWord Result
    /// 
    /// 
    /// 
    /// 
    IEnumerator logeWordForwardLexicalFunction(List longWord, List LexicalResult)
    {
        int number = 0;

        while (true)
        {
            if (logeWordForward.Equals(""))
            {
                foreach (string str in longWord)
                {
                    LexicalResult.Add(MySQL.MySQL.INQUIRE_DATABASE(dataBasetitle, 5, str));
                    number += 1;
                }

                // 限制迴圈執行
                if (number <= longWord.Count)
                    break;
            }

            yield return new WaitForSeconds(0.5f);
        }
    }

    /// 
    /// 正向長詞優先
    /// IEnumerator: unity執行序
    /// 
    /// 
    IEnumerator loneWordForwardFunction()
    {
        while (true)
        {
            foreach (Match match in segmentationSybolTool.brokenSatus(logeWordForward, logeWordForwadLenght))
            {
                if (match.ToString() == MySQL.MySQL.INQUIRE_DATABASE(dataBasetitle, 0, match.ToString()))
                {
                    logeWordForwardFunctionList.Add(match.ToString());

                    logeWordForward = inspection(logeWordForward, logeWordForwardFunctionList);
                    logeWordForwadLenght = logeWordForward.Length;
                }
            }

            if (logeWordForwadLenght <= 0)
                logeWordForwadLenght = 0;
            else logeWordForwadLenght -= 1;

            yield return new WaitForSeconds(0.5f);
        }
    }

    /// 
    /// 後向長詞優先
    /// lenght: sentence lenght
    /// IEnumerator: unity 執行序
    /// 
    /// 
    /// 
    IEnumerator longWordReverseFunction(int lenght)
    {
        while (true)
        {
            foreach (Match match in segmentationSybolTool.brokenSatus(logeWordReverse, logeWordReverse.Length))
            {
                if (match.ToString() == MySQL.MySQL.INQUIRE_DATABASE(dataBasetitle, 0, match.ToString()))
                {
                    logeWordReverseFunctuinList.Add(match.ToString());
                    logeWordReverse = segmentationSybolTool.delectWord(logeWordReverse, match.Length);
                }
            }

            try
            {
                foreach (string str in segmentationSybolTool.delect_Word_Combination(logeWordReverse, lenght))
                {
                    if (str == MySQL.MySQL.INQUIRE_DATABASE(dataBasetitle, 0, str))
                    {
                        logeWordReverseFunctuinList.Add(str);
                        lenght = 0;
                        logeWordReverse = segmentationSybolTool.delectWord(logeWordReverse, logeWordReverse.Length - str.Length);
                    }
                }
                lenght += 1;

                if (logeWordReverse == MySQL.MySQL.INQUIRE_DATABASE(dataBasetitle, 0, logeWordReverse))
                {
                    logeWordReverseFunctuinList.Add(logeWordReverse);
                    logeWordReverse = segmentationSybolTool.delectWord(logeWordReverse, logeWordReverse.Length - MySQL.MySQL.INQUIRE_DATABASE(dataBasetitle, 0, logeWordReverse).Length);
                }

                if (lenght >= logeWordReverseLenght)
                    lenght = 0;

            }
            catch (Exception e) { logeWordReverseFunctuinList.Remove("");}

            yield return new WaitForSeconds(0.5f);

        }
    }

    /// 
    /// logeMakesFunction
    /// Variety1 and Variety2
    /// 
    /// 
    IEnumerator logeMakesFunction()
    {
        while (true)
        {
            if (logeWordForward.Equals(""))
            {
                // 正向長詞優先詞性變化1
                foreach (string str in logeWordForwardFunctionList)
                    logeWordForwardMark1List.Add(MySQL.MySQL.INQUIRE_DATABASE(dataBasetitle, 2, str));

                // 反向長詞優先詞性變化1
                foreach(string str in logeWordReverseCorrectionList)
                    logeWordReverseMark1List.Add(MySQL.MySQL.INQUIRE_DATABASE(dataBasetitle, 2, str));
                break;
            }
            yield return new WaitForSeconds(0.5f);
        }
    }

    /// 
    /// result Systematics
    /// 
    /// 
    public IEnumerator logWordResultSystematics()
    {
        string logeWordForwardMessage = "", logeWordReverseMessage = "";
        string logeWordForward_LexicalMessage = "", logeWordReverse_LexicalMessage = "";


        while (true)
        {
            if (logeWordForward.Equals(""))
            {
                for (int x = 0; x <= logeWordForwardFunctionList.Count - 1; x++)
                    logeWordForwardMessage += logeWordForwardFunctionList[x] + "(" + logeWordForwardMark1List[x] + ")" + " ";

                for (int x = 0; x <= logeWordReverseCorrectionList.Count - 1; x++)
                    logeWordReverseMessage += logeWordReverseCorrectionList[x] + "(" + logeWordReverseMark1List[x] + ")" + " ";
                
                foreach (string str in logeWordForwardLexicalFunctionList)
                    logeWordForward_LexicalMessage += str + "|";

                foreach (string str in logeWordReverseLexicalFunctionList)
                    logeWordReverse_LexicalMessage += str + "|";

                resultMessage = "正向長詞優先結果: \n" + logeWordForwardMessage + "\n\n" + "反向長詞優先結果: \n" + logeWordReverseMessage + "\n\n"
                    + "正向長詞詞位標記: \n" + logeWordForward_LexicalMessage + "\n\n" + "反向長詞詞位標記: \n" + logeWordReverse_LexicalMessage;

                break;
            }
            yield return new WaitForSeconds(0.5f);
        }
    }
}


-----Layout Script (介面)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Layout : LongWordsFirst2 {

    public Text systemMessage, inputMessage, result, runStatus;
    public InputField userField;
    public Button buttonEnter;
    public Button buttonRefill;
    public Button exit;
    public Image inputMessageBackground;
    public Button Sort;

    // 顯示文字結果
    public Text resultText;
    public Scrollbar scrollbarResult;

    /// 
    /// 確定
    /// 
    void btnOnClick_Enter()
    {
        cuttingReady();
    }

    /// 
    /// 重填
    /// 
    void btnOnClick_Refill()
    {
        inputFieldType(userField, 0.6f, 1, 1, 1).text = "";
        messageType = "";
    }

    /// 
    /// 顯示結果
    /// 
    void btnOnClick_Sort()
    {
        try
        {
            if (logeWordReverseType.Length == 0)
            {
                textType(runStatus, "(等待執行)", 25, Color.blue, 0.6f, 1.8f); // title
                StartCoroutine(logWordResultSystematics());
                resultTextType(resultText).text = resultMessageType; // display result Message
            }

            else
            {
                textType(runStatus, "(執行)", 25, Color.blue, 0.6f, 1.8f);
            }
        }
        catch { }
    }

    /// 
    /// 離開應用程式
    /// 
    void btnOnClick_Exit()
    {
        Application.Quit();
        MySQL.MySQL.closeSqlConnection();
    }

    /// 
    /// button Component
    /// btn: button Obj
    /// width / height: button Obj posistion
    /// sizeX / sizeY: button Obj size
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    Button buttonType(Button btn, float width, float height, float sizeX, float sizeY)
    {
        try
        {
            btn.transform.position = new Vector2(Screen.width / 2 * width, Screen.height / 2 * height);
            // posistion
            btn.transform.position = new Vector2(Screen.width / 2 * width, Screen.height / 2 * height);
            // imageSize
            btn.image.rectTransform.sizeDelta = new Vector2(Screen.width / 2 * sizeX, sizeY);

            switch (btn.name)
            {
                case "Enter":
                    btn.onClick.AddListener(() => btnOnClick_Enter());
                    break;
                case "Refill":
                    btn.onClick.AddListener(() => btnOnClick_Refill());
                    break;
                case "Exit":
                    btn.onClick.AddListener(() => btnOnClick_Exit());
                    break;
                case "Sort":
                    btn.onClick.AddListener(() => btnOnClick_Sort());
                    break;

            }
        }
        catch { }

        return btn;
    }

    /// 
    /// inputField Component
    /// InputField: inputField Obj
    /// message: sentence message
    /// width / height: inputField Obj posistion
    /// sizeX / sizeY: inputField size
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    InputField inputFieldType(InputField inputField,float width, float height, float sizeX, float sizeY)
    {
        inputField.transform.position = new Vector2(Screen.width / 2 * width, Screen.height / 2 * height);
        inputField.image.rectTransform.sizeDelta = new Vector2(Screen.width / 2 * sizeX, Screen.height / 2 * sizeY);

        return inputField;
    }

    /// 
    /// scrollbarType
    /// Scrollbar: scrollbar obj
    /// width / height: scrollbar obj posistion
    /// sizeX / sizeY: scrollbar obj size
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    Scrollbar scrollbarType(Scrollbar scrollbar, float width, float height)
    {
        try
        {
            scrollbar.transform.position = new Vector2(Screen.width / 2 * width, Screen.height / 2 * height);
        }
        catch { }

        return scrollbar;
    }

    // Text 屬性
    Text textType(Text text, string message, int fontsize, Color color, float width, float height)
    {
        try
        {
            Color col = new Color(color.r, color.g, color.b);

            // posistion 
            text.rectTransform.position = new Vector2(Screen.width / 2 * width, Screen.height / 2 * height);

            text.text = message;
            text.fontSize = fontsize;
            text.color = col;
        }
        catch { }
        return text;
    }

    /// 
    /// ImageType
    /// Image: image obj
    /// width / height: image obj posistion
    /// sizeX / sizeY: image obj size
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    Image ImageType(Image image, float width, float height, float sizeX, float sizeY)
    {
        try
        {
            // posistion
            image.rectTransform.position = new Vector2(Screen.width / 2 * width, Screen.height / 2 * height);

            // imageSize
            image.rectTransform.sizeDelta = new Vector2(Screen.width / 2 * sizeX, Screen.height / 2 * sizeY);
        }
        catch { }

        return image;
    }

    /// 
    /// resultTextType
    /// 
    /// 
    /// 
    Text resultTextType(Text text)
    {
        try
        {
            text.horizontalOverflow = HorizontalWrapMode.Wrap;
            text.verticalOverflow = VerticalWrapMode.Overflow;
        }
        catch { }

        return text;
    }

    void Start()
    {
        OpenDataBase(); // openDatabase

        textType(systemMessage, "歡迎使用系統", 25, Color.red, 0.3f, 1.8f); // title
        textType(inputMessage,"請輸入句子", 25, Color.red, 0.3f, 1.6f); // title

        buttonType(buttonEnter, 0.2f, 0.3f, 0.2f, 30); // enter button
        buttonType(buttonRefill, 0.6f, 0.3f, 0.2f, 30); // return input Message button
        buttonType(exit, 1f, 0.3f, 0.2f, 30); // exit button
        buttonType(Sort, 0.4f, 0.3f, 0.2f, 30); // sort button

        textType(result, "結果", 25, Color.red, 1.4f, 1.8f); // result
    }

    void Update()
    {
        messageType = inputFieldType(userField, 0.6f, 1, 1, 1).text; // user input Message
        ImageType(inputMessageBackground, 1.55f, 1.1f, 0.8f, 1.2f); // result background
        scrollbarType(scrollbarResult, 1.93f, 1.1f);
    }
}

專案下載
------ 結果圖-----