Unity降版本的蛋疼操作

最近项目遇到个极为蛋疼的需求,因为某SDK不支持新版本,Unity需要葱2019降为2018. 2018导入2019的工程后,Unity自带的大量脚本丢失引用,一时头秃。

最后只能研究了下手动以文本方式打开prefab,对比新旧版本Unity脚本的FileID和GUID字段,写个脚本遍历工程中所有prefab,进行替换。

关于查看丢失引用的情况,推荐Maintainer插件,非常好用 https://assetstore.unity.com/packages/tools/utilities/maintainer-32199?locale=zh-CN

关于FileID和GUID可以参考这篇博文https://www.cnblogs.com/CodeGize/p/8697227.html

using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;public class ProcessUnityVersion
{public static Dictionary<string, string> replaceDict = new Dictionary<string, string>(){{"m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}", "m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}", "m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}", "m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}", "m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}", "m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}", "m_Script: {fileID: -1200242548, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}", "m_Script: {fileID: 11500000, guid: a65f502c9af7751458beffa2a6c253c3, type: 3}"},{"m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3}", "m_Script: {fileID: -2095666955, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}", "m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}", "m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}","m_Script: {fileID: -900027084, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}","m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{" m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}","m_Script: {fileID: 1367256648, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}","m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3}","m_Script: {fileID: -1254083943, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}","m_Script: {fileID: -113659843, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}","m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}","m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}","m_Script: {fileID: 2109663825, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},{"m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}","m_Script: {fileID: -1862395651, guid: f70555f144d8491a825f0804e09c671c, type: 3}"},};[MenuItem("Tool/替换低版本引用")]public static void Process(){ProcessAllPrefabs();}private static void ProcessAllPrefabs(){List<GameObject> prefabs = new List<GameObject>();var resourcesPath = Application.dataPath;var absolutePaths = System.IO.Directory.GetFiles(resourcesPath, "*.prefab", System.IO.SearchOption.AllDirectories);for (int i = 0; i < absolutePaths.Length; i++){Debug.Log("prefab name: " + absolutePaths[i]);foreach (var VARIABLE in replaceDict){ReplaceValue(absolutePaths[i],VARIABLE.Key, VARIABLE.Value );}EditorUtility.DisplayProgressBar("处理预制体……", "处理预制体中……", (float)i/absolutePaths.Length);}EditorUtility.ClearProgressBar();}/// <summary>/// 替换值/// </summary>/// <param name="strFilePath">txt等文件的路径</param>private static void ReplaceValue(string strFilePath, string oldLine, string newLine){if (File.Exists(strFilePath)){string[] lines = System.IO.File.ReadAllLines(strFilePath);for (int i = 0; i < lines.Length; i++){lines[i] = lines[i].Replace(oldLine, newLine);}File.WriteAllLines(strFilePath, lines);}}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 调整数组顺序使奇数位于偶数前面

解法一&#xff1a;双指针 public int[] Exchange(int[] nums) {int head 0;int tail nums.Length - 1;while(head < tail){if((nums[head] & 1) 1){head;continue;}else if((nums[tail] & 1) 0){tail--;continue;}else{int temp nums[head];nums[head] nums[…

pytorch test单张图片_PyTorch版EfficientDet比官方TF实现快25倍?这个GitHub项目数天狂揽千星...

EfficientDet 难复现&#xff0c;复现即趟坑。在此 Github 项目中&#xff0c;开发者 zylo117 开源了 PyTorch 版本的 EfficientDet&#xff0c;速度比原版高 20 余倍。如今&#xff0c;该项目已经登上 Github Trending 热榜。机器之心报道&#xff0c;项目作者&#xff1a;zyl…

Xcode and Unity missing library ‘lGoogleUtilities‘

https://stackoverflow.com/questions/58187800/xcode-and-unity-missing-library-lgoogleutilities

c++ 字符串合并_C语言输入字符和字符串(所有函数大汇总)

C语言输入字符和字符串(所有函数大汇总)C语言有多个函数可以从键盘获得用户输入&#xff0c;它们分别是&#xff1a;scanf()&#xff1a;和 printf() 类似&#xff0c;scanf() 可以输入多种类型的数据。getchar()、getche()、getch()&#xff1a;这三个函数都用于输入单个字符。…

Please provide an auth token with USYM_UPLOAD_AUTH_TOKEN environment Unity Mac 命令行出包报错

Unity有些版本的bug&#xff0c;因为什么Cloud build。这几天更新Unity版本后jenkins无法自动打IOS IPA&#xff0c;报错内容为&#xff1a; Please provide an auth token with USYM_UPLOAD_AUTH_TOKEN environment Google一大波&#xff0c;才找到解决方案&#xff1a;填写…

appimage文件怎么安装_bauh:在一个界面中管理 Snap、Flatpak 和 AppImage | Linux 中国...

幸运的是&#xff0c;我偶然发现了一个支持这几种通用包格式的应用程序。-- John PaulSnap、Flatpak 和 AppImage 等通用软件包的最大问题之一就是管理它们。大多数内置的软件包管理器都不能全部支持这些新格式。幸运的是&#xff0c;我偶然发现了一个支持这几种通用包格式的应…

字符编码笔记:ASCII,Unicode 和 UTF-8

作者&#xff1a; 阮一峰 日期&#xff1a; 2007年10月28日 今天中午&#xff0c;我突然想搞清楚 Unicode 和 UTF-8 之间的关系&#xff0c;就开始查资料。 这个问题比我想象的复杂&#xff0c;午饭后一直看到晚上9点&#xff0c;才算初步搞清楚。 下面就是我的笔记&#x…

python实现程序安装_使用python实现对windows软件包的安装和卸载

在对windows安装包产品进行测试时&#xff0c;安装和卸载是难免的&#xff0c;并且人工的手动安装和卸载会花费大量的精力和时间&#xff0c;为此需要编写一个脚本来实现对windows安装包产品的自动卸载和安装。 首先参考了 http://www.cnblogs.com/TankXiao/archive/2012/10/18…

图形学教程Lecture 13: RayTracing1(Whitted-Style Ray Tracing)知识点总结

课程地址&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p13 课件地址&#xff1a;https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html 感谢大神的课程 1.光线追踪的好处&#xff1a;真实&#xff0c;但是效率低&#xff0c;所以目前是离线渲染 2.whitt…

python课程设计编写电子通讯录_用Python实现简单通讯录

一个简单的通讯录例子 #!/usr/bin/python __author__ fierce #coding:utf-8 import os #引用os模块 import pickle #应用pickle模块 Path/home/Person.data #全局变量&#xff0c;这里是通讯录物理路径 #判断通讯录是否存在&#xff0c;不存在则创建空通讯录 if os.path.exist…

图形学教程Lecture 14: RayTracing1(Acceleration Radiometry)知识点总结

课程地址&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p14 课件地址&#xff1a;https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html 感谢大神的课程 1.用统一的空间划分&#xff08;Grid&#xff09;加速计算光线相交。划分颗粒度需要注意&#xff0…

Unity项目代码书写规范

以Google的代码规范为主&#xff0c;稍加改动 https://google.github.io/styleguide/csharp-style.html 书写规范 基础写法 Pascal和驼峰混用&#xff0c;参数用驼峰写法&#xff0c;除参数外&#xff0c;都以Pascal写法为主。括号建议用换行方式书写Code 类, 方法, 枚举, …

python常用的包_Python3之常用包汇总

原博文 2020-06-04 10:53 − Python包网站: https://pypi.org/ 1. 繁体与简体转换(https://github.com/berniey/hanziconv.git) pip install hanziconv 示例: from hanziconv impo... 相关推荐 2019-12-09 20:32 − [TOC] # 1. 模块 ## 1.1 模块是什么&#xff1f; - 模块就是个…

Unity游戏中的一些规范和优化建议

一&#xff0e;代码规范和建议 避免Update LateUpdate等函数内频繁的GC Alloc&#xff0c;避免在Update和LateUpdate内有以下操作&#xff1a; 调用GetComponet() 调用FindObjectsOfType() 使用GameObject.Tag和GameObject.Name 等等其他有堆内存分配的操作 避免频繁调用T…

vue如何获取年月日_BootstrapVue——Vue和Bootstrap的相结合,构建响应式应用更简单...

介绍BootStrap是世界上最受欢迎的构建响应式移动优先网站的框架&#xff0c;Vue是当前最流行的前端框架之一&#xff0c;BootstrapVue则是将两者相结合&#xff0c;使用BootstrapVue&#xff0c;可以使用Vue.js和前端CSS库--Bootstrap v4在Web上构建响应式&#xff0c;移动优先…

计算机图形学:光场

https://zhuanlan.zhihu.com/p/47492390 https://zhuanlan.zhihu.com/c_1035195596059222016

cpu队列长度太长解决方法_CPU中的调试算法对比

批处理系统中采用的调度算法重要指标(吞吐量&#xff0c;周转时间&#xff0c;CPU利用率&#xff0c;公平平衡)非抢占式的先来先服务算法(FCFS)&#xff1a;按照进程就绪的先后顺序使用CPU特点&#xff1a;公平&#xff0c;实现简单&#xff0c;但是长进程后面的短进程需要等待…

Mono,CLR,.net,Net Framework之间的关系

先粗略看下各自的意义&#xff1a; .Net&#xff1a;以下这些技术的统称。是一个平台&#xff0c;而.NET平台有一个实现标准&#xff0c;叫做.Net Standard&#xff1b;.Net Framework/.Net Core/Mono&#xff1a;实现了这个标准&#xff0c;其选择的组件不一定相同CLR&#x…

c++矩阵类_数据结构-JavaScript矩阵类的设计与实现

矩阵是线性代数课学习的重点内容之一&#xff0c;也是线性代数常见工具之一&#xff0c;在应用数学、统计分析、计算机科学、计算机图像处理级物理等多学科中均有应用。矩阵主要是指数据的行列排列的形式&#xff0c;由行row与列col所组成&#xff0c;在数学中M*N矩阵是指具有M…

GPU Skin

转自&#xff1a;http://geekfaner.com/unity/blog4_GPUSkin.html GPU Skin这门技术在端游时代属于标配&#xff0c;特别是MMO游戏&#xff0c;但是手游时代就要case by case了&#xff0c;因为手机的GPU资源还是很珍贵的&#xff08;后处理之类的&#xff09;。作为技术人员&…