最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

unity學習教程之定制腳本模板示例代碼

 更新時間:2018年12月30日 10:58:49   作者:禹澤鵬鵬  
這篇文章主要給大家介紹了關于unity學習教程之定制腳本模板的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1、unity的腳本模板

新版本unity中的C#腳本有三類,第一類是我們平時開發(fā)用的C# Script;第二類是Testing,用來做單元測試;第三類是Playables,用作TimeLine中管理時間線上每一幀的動畫、聲音等。我們點擊創(chuàng)建腳本時,會自動生成unity內置的一套模板:

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

public class NewBehaviourScript : MonoBehaviour {

 // Use this for initialization
 void Start () {
  
 }
 
 // Update is called once per frame
 void Update () {
  
 }
}

如果我們開發(fā)時使用的框架有明顯的一套基礎模板, 那為項目框架定制一套模板會很有意義,這樣可以為我們省去編寫重復代碼的時間。這里介紹兩種方法。

2、修改默認腳本模板

打開unity安裝目錄,比如D:\unity2018\Editor\Data\Resources\ScriptTemplates,unity內置的模板腳本都在這里,那么可以直接修改這里的cs文件,比如我們將81-C# Script-NewBehaviourScript.cs.txt文件修改為如下,那下次創(chuàng)建C# Script時模板就會變成這樣:

////////////////////////////////////////////////////////////////////
//       _ooOoo_        //
//       o8888888o        //
//       88" . "88        //
//       (| ^_^ |)        //
//       O\ = /O        //
//      ____/`---'\____       //
//     .' \\|  |// `.       //
//     / \\||| : |||// \      //
//     / _||||| -:- |||||- \      //
//     | | \\\ - /// | |      //
//     | \_| ''\---/'' | |      //
//     \ .-\__ `-` ___/-. /      //
//    ___`. .' /--.--\ `. . ___      //
//    ."" '< `.___\_<|>_/___.' >'"".     //
//   | | : `- \`.;`\ _ /`;.`/ - ` : | |     //
//   \ \ `-. \_ __\ /__ _/ .-` / /     //
//  ========`-.____`-.___\_____/___.-`____.-'========   //
//       `=---='        //
//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  //
//   佛祖保佑  永不宕機  永無BUG     //
////////////////////////////////////////////////////////////////////



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

public class #SCRIPTNAME# : MonoBehaviour {

 // Use this for initialization
 void Start () {
  #NOTRIM#
 }
 
 // Update is called once per frame
 void Update () {
  #NOTRIM#
 }
}

3、拓展腳本模板

上面講的第一種方法直接修改了unity的默認配置,這并不適應于所有項目,這里第二種方法會更有效,可以針對不同的項目和框架創(chuàng)建合適的腳本模板。

首先,先創(chuàng)建一個文本文件MyTemplateScript.cs.txt作為腳本模板,并將其放入unity project的Editor文件夾下,模板代碼為:

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

public class MyNewBehaviourScript : MonoBase {

 //添加事件監(jiān)聽
 protected override void AddMsgListener()
 {

 }
 
 //處理消息
 protected override void HandleMsg(MsgBase msg)
 {
  switch (msg.id)
  {
   default:
    break;
  }
 }

}

我們使用時,需要在Project視圖中右擊->Create->C# FrameScript 創(chuàng)建腳本模板,因此首先要創(chuàng)建路徑為Assets/Create/C# FrameScript的MenuItem,點擊創(chuàng)建腳本后,需要修改腳本名字,因此需要在拓展編輯器腳本中繼承EndNameEditAction來監(jiān)聽回調,最終實現輸入腳本名字后自動創(chuàng)建相應的腳本模板。

代碼如下,將這個腳本放入Editor文件夾中:

using UnityEditor;
using UnityEngine;
using System;
using System.IO;
using UnityEditor.ProjectWindowCallback;
using System.Text;
using System.Text.RegularExpressions;

public class CreateTemplateScript {

  //腳本模板路徑
  private const string TemplateScriptPath = "Assets/Editor/MyTemplateScript.cs.txt";

  //菜單項
  [MenuItem("Assets/Create/C# FrameScript", false, 1)]
  static void CreateScript()
  {
    string path = "Assets";
    foreach (UnityEngine.Object item in Selection.GetFiltered(typeof(UnityEngine.Object),SelectionMode.Assets))
    {
      path = AssetDatabase.GetAssetPath(item);
      if (!string.IsNullOrEmpty(path) && File.Exists(path))
      {
        path = Path.GetDirectoryName(path);
        break;
      }
    }
    ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<CreateScriptAsset>(),
    path + "/MyNewBehaviourScript.cs",
    null, TemplateScriptPath);

  }
  
}


class CreateScriptAsset : EndNameEditAction
{
  public override void Action(int instanceId, string newScriptPath, string templatePath)
  {
    UnityEngine.Object obj= CreateTemplateScriptAsset(newScriptPath, templatePath);
    ProjectWindowUtil.ShowCreatedAsset(obj);
  }

  public static UnityEngine.Object CreateTemplateScriptAsset(string newScriptPath, string templatePath)
  {
    string fullPath = Path.GetFullPath(newScriptPath);
    StreamReader streamReader = new StreamReader(templatePath);
    string text = streamReader.ReadToEnd();
    streamReader.Close();
    string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(newScriptPath);
    //替換模板的文件名
    text = Regex.Replace(text, "MyTemplateScript", fileNameWithoutExtension);
    bool encoderShouldEmitUTF8Identifier = true;
    bool throwOnInvalidBytes = false;
    UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes);
    bool append = false;
    StreamWriter streamWriter = new StreamWriter(fullPath, append, encoding);
    streamWriter.Write(text);
    streamWriter.Close();
    AssetDatabase.ImportAsset(newScriptPath);
    return AssetDatabase.LoadAssetAtPath(newScriptPath, typeof(UnityEngine.Object));
  }

}

然后,在project中,點擊創(chuàng)建C# FrameScript,輸入腳本名字,對應的腳本就已經創(chuàng)建好了

4、總結

上面介紹了兩種方案,第一種適合玩玩,第二種方法顯然格調高一些,為不同的項目和框架定制一套腳本模板,可以讓我們少寫一些重復代碼。按照上面介紹的方法,我們同樣可以修改和拓展Testing、Playables的腳本模板,甚至shader,我們也可以定制模板。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Unity實現毫秒延時回調功能

    Unity實現毫秒延時回調功能

    這篇文章主要為大家詳細介紹了Unity實現毫秒延時回調功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Winform窗體縮放下使用剪切板功能出現頁面閃動解決分析

    Winform窗體縮放下使用剪切板功能出現頁面閃動解決分析

    這篇文章主要介紹了Winform窗體縮放下使用剪切板功能出現頁面閃動解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 基于params,ref,out的參數問題詳解

    基于params,ref,out的參數問題詳解

    本篇文章是對params,ref,out的參數問題進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • C#11新特性之file關鍵字的用法教程

    C#11新特性之file關鍵字的用法教程

    C#11?添加了文件作用域類型功能:一個新的?file?修飾符,可以應用于任何類型定義以限制其只能在當前文件中使用。這樣,我們可以在一個項目中擁有多個同名的類。本文就來聊聊file關鍵字的用法,需要的可以參考一下
    2022-12-12
  • 基于C#編寫一個遠程桌面應用

    基于C#編寫一個遠程桌面應用

    封閉環(huán)境無法拷貝外來的遠程桌面軟件,所以這篇文章小編就來帶大家用C#編寫一個簡單的遠程桌面應用,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • c++函數轉c#函數示例程序分享

    c++函數轉c#函數示例程序分享

    這篇文章主要介紹了c++函數轉c#函數示例程序,大家參考使用吧
    2013-12-12
  • c#多種加解密示例(md5加密解密)

    c#多種加解密示例(md5加密解密)

    這篇文章主要介紹了c#多種加解密示例,包括了MD5加密,SHA1加密,DES加解密,需要的朋友可以參考下
    2014-03-03
  • C# SMTP發(fā)送郵件的示例

    C# SMTP發(fā)送郵件的示例

    這篇文章主要介紹了C# SMTP發(fā)送郵件的示例,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下
    2020-12-12
  • 聊一聊C#接口問題 新手速來圍觀

    聊一聊C#接口問題 新手速來圍觀

    聊一聊C#接口問題,新手速來圍觀,一個通俗易懂的例子幫助大家更好的理解C#接口問題,感興趣的小伙伴們可以參考一下
    2016-08-08
  • c#批量上傳圖片到服務器示例分享

    c#批量上傳圖片到服務器示例分享

    這篇文章主要介紹了c#批量上傳圖片到服務器示例,服務器端需要設置圖片存儲的虛擬目錄,需要的朋友可以參考下
    2014-03-03

最新評論

文成县| 上林县| 西峡县| 泗阳县| 司法| 沅陵县| 黑河市| 无棣县| 晋州市| 柘荣县| 丹江口市| 成安县| 岢岚县| 靖江市| 威海市| 常熟市| 肥西县| 沂源县| 花莲县| 灵台县| 定日县| 海南省| 高密市| 岢岚县| 莱州市| 盐津县| 大余县| 墨玉县| 沅陵县| 马关县| 文安县| 凤山县| 米泉市| 滨州市| 余江县| 古蔺县| 伊通| 绥芬河市| 温宿县| 荥经县| 德格县|