栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

关于给Unity添加垃圾代码的一些心得

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于给Unity添加垃圾代码的一些心得

首先给Unity添加垃圾代码,首先是参考某位大佬博客https://blog.csdn.net/linxinfa/article/details/115299584
生成完之后,我就开始基于它那基础搞了动态生成脚本
用来调用初始所有的垃圾函数的类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Linq;
using UnityEditor;
using System;
using System.Text;

public static class RubbishList
{
    public static List List = new List();
}



public class MyToolCreateScript
{

    static string myFilePath = "/MyScripts/RubbishXiaoHuang.cs";
  
    private static string className;
    private static string folderName = "/Scripts/output";



    [MenuItem("小黄/垃圾代码调用")]
    static void UseRubbishCodeToMono()
    {
        CheckFilecs();
        CreateCode();
    }

    private static void CheckFilecs()
    {

        folderName = Application.dataPath + folderName;
        DirectoryInfo CSFile = new DirectoryInfo(folderName);

        foreach (FileInfo file in CSFile.GetFiles())
        {
            if (file.Name.EndsWith(".cs"))
            {
                Debug.Log(file.Name.Substring(0, file.Name.IndexOf(".")));
                string myscript = file.Name.Substring(0, file.Name.IndexOf("."));
                RubbishList.List.Add(myscript);
            }

        }
    }


    static void CreateCode()
    {
        string realPath = Application.dataPath + myFilePath;

        var fs = new FileStream(realPath, FileMode.OpenOrCreate);

        if(!fs.CanWrite)
        {
            Debug.LogError("无法写入文件");
            return;
        }

        string data = CreateClass(true);

        var bytes = Encoding.UTF8.GetBytes(data);

        Debug.Log("class长度:" + bytes.Length);

        fs.Write(bytes, 0, bytes.Length);

        fs.Flush();

        fs.Close();

    }

    private static string CreateClass(bool v)
    {
        StringBuilder sb = new StringBuilder();

        sb.Append(CreateUsing());
        var str = CreateClassHead(true,"RubbishXiaoHuang");
        sb.Append(str);
        sb.Append(CreateMethodStart());
        sb.Append(CreateClassEnd());
        return sb.ToString();

    }

    private static string CreateUsing()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("using UnityEngine;nusing System;nusing System.Collections.Generic;nusing System.IO;nusing System.Text;");
        return sb.ToString();
    }

    static string CreateClassHead(bool implementMono, string className)
    {
        string str = implementMono ? ":MonoBehaviour" : "";
        return "npublic  class " + className + str + "n{";
    }

    static string CreateClassEnd()
    {
        string str = "n}";
        return str;
    }


    static string CreateMethodStart()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("nvoid Start()n{n");
        for(int i=0;i
            int k = i;
            string str = RubbishList.List[k].ToString() + "t" + RubbishList.List[k].ToLower() + "=newt" + RubbishList.List[k] + "( );n";
            sb.Append(str);
        }
        sb.Append("}");
        return sb.ToString();

    }
    
    [MenuItem("小黄/生成挂在垃圾代码物体")]
    static void CreateGameObject()
    {
        if(File.Exists(Application.dataPath+myFilePath))
        {
            GameObject ScripGameObject = new GameObject("垃圾");

            
        }
        else
        {
            Debug.Log("不存在该脚本");
        }
    }
}

最后将那个名字叫垃圾的物体挂上脚本就可以相当于调用了垃圾代码的一些接口,暂时还没测过是否过审

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900258.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号