Unity3D利用代码生成脚本模板

点点圈 提交于 2019-12-03 15:46:10

                          Unity3D利用代码生成脚本模板


目录

1、博客介绍

2、内容

(1)生成脚本展示

(2)核心

3、推送

4、结语



1、博客介绍

       最近一直在学习框架,看到了一点关于在编辑器下去自动生成UI相关代码的逻辑,感觉很好用,就拆解的去学习,这边博客先介绍一下利用代码去生成脚本,我看其他的博客生成脚本的时候基本都是使用StringBuilder去一行一行的拼,感觉很麻烦,看了凉鞋大大地QFramework中生成的部分,中间是通过一个模本脚本来生成自己需要的脚本,感觉很方便,这里博主写的很简单,凉鞋老师的QFramework中有更加丰富的写法和用法,有兴趣的同学可以跳转一下,结语有推送。


2、内容

(1)生成脚本展示

(2)核心

第一项:创建我们的模板脚本,我们需要在这个模板脚本内写下我们需要生成的一些通用方法。

using UnityEngine;

namespace TemplateNameSpace
{
	/// <summary>
	/// 代码模板
	/// Author:Sun
	/// Time:2019/5/29 23:58
	/// </summary>
	public class ScriptTemplate : MonoBehaviour {

		public void OnInit()
		{
		
		}
	
		public void OnEvent()
		{
		
		}

		public void OnShow()
		{
		
		}

		public void OnHide()
		{
		
		}
	}

}



第二项:创建脚本,修改文件名和类名,剩下的我们就只需要指定一些变量,比如是脚本名类名,命名空间啥的,然后使用字符串Replace的替换方法,把模板内的对应项替换掉,最后把替换好的内容写入文件内就可以了。

 

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

/// <summary>
/// 创建代码测试
/// Author:Sun
/// Time:2019/5/29 23:59
/// </summary>
public class CodeCreate : MonoBehaviour
{

	/// <summary>
	/// 脚本名
	/// </summary>
	public string ScriptName;
	/// <summary>
	/// 命名空间
	/// </summary>
	public string NameSpace;
	/// <summary>
	/// 模板内容
	/// </summary>
	private string _templateContent;
	/// <summary>
	/// 模板路径
	/// </summary>
	private string _templatePath;
	/// <summary>
	/// 生成路径
	/// </summary>
	private string _spawnPath;
	
	private void Start()
	{
		_templatePath = "Assets/ScriptTemplate.cs";
		_spawnPath = "Assets/SpawnCode/";
		//读取模板内容
		_templateContent = File.ReadAllText(_templatePath);

	}

	private void OnGUI()
	{
		if (GUI.Button(new Rect(0,0,200,200),"创建模板脚本" ))
		{
			if (ScriptName!=null)
			{
				//生成路径
				var path = _spawnPath + ScriptName+".cs";
				//替换类名
				_templateContent = _templateContent.Replace("ScriptTemplate",ScriptName);

				if (NameSpace!=null)
				{
					//替换命名空间
					_templateContent = _templateContent.Replace("TemplateNameSpace",NameSpace);
				}
				//将组织好的内容写入文件
				File.WriteAllText(path, _templateContent, Encoding.UTF8);
				//刷新一下资源,不然创建好文件后第一时间不会显示
				AssetDatabase.Refresh();
			}
			else
			{
				Debug.LogWarning("文件名不能为空");
			}
		}
	}
}

3、推送

本项目工程源码:https://github.com/KingSun5/Study_CreateCode

QFramework:https://github.com/liangxiegame/QFramework


4、结语

       很简单的一个创建代码的思路,希望对看到的同学有所帮助,下一篇博客写一下直接通过编辑器拓展在编辑状态下生成我们想要的代码模板,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

       QQ交流群:806091680(Chinar)

       该群为CSDN博主Chinar所创,推荐一下!我也在群里!

       本文属于原创文章,转载请著名作者出处并置顶!!!!!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!