Fixed issue in which Unity types could be referenced from multiple assemblies.

also added some more log and pointed out that 2018.1 is the recommend version to run the converter.
This commit is contained in:
Adriano Carlos Verona 2018-09-04 23:06:46 -04:00
Родитель 402b65c35f
Коммит fe32e679c2
3 изменённых файлов: 20 добавлений и 15 удалений

Просмотреть файл

@ -2,16 +2,21 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using Assets.Editor;
using UnityEditor;
using UnityEditor.Compilation;
using UnityEngine;
using UnityEngine.SceneManagement;
using Application = UnityEngine.Application;
using Debug = UnityEngine.Debug;
#if UNITY_2017_3_OR_NEWER
using System.Linq;
using UnityEngine.SceneManagement;
using UnityEditor.Compilation;
#endif
[Serializable]
public class UnityScript2CSharpRunner : UnityEditor.EditorWindow
{
@ -248,7 +253,8 @@ public class UnityScript2CSharpRunner : UnityEditor.EditorWindow
var referencedAssemblies = CompilationPipeline.GetAssemblies()
.SelectMany(a => a.compiledAssemblyReferences)
.Where(a => !a.Contains(unityInstallPath) || a.Contains("UnityExtensions"));
.Where(a => !a.Contains(unityInstallPath) || a.Contains("UnityExtensions"))
.Distinct(StringComparer.InvariantCultureIgnoreCase);
foreach (var assemblyPath in referencedAssemblies)
{

Просмотреть файл

@ -234,16 +234,8 @@ namespace UnityScript2CSharp
private static void AppendUnityAssembliesReferences(string unityAssembliesRootPath, List<string> references)
{
var modularizedUnityEngineFolder = Path.Combine(unityAssembliesRootPath, "UnityEngine");
if (Directory.Exists(modularizedUnityEngineFolder))
{
foreach (var assemblyPath in Directory.GetFiles(modularizedUnityEngineFolder, "*.dll"))
{
references.Add(assemblyPath);
}
}
else
references.Add(Path.Combine(unityAssembliesRootPath, "UnityEngine.dll"));
references.Add(Path.Combine(unityAssembliesRootPath, "UnityEngine.dll"));
references.Add(Path.Combine(unityAssembliesRootPath, "UnityEditor.dll"));
}
@ -331,6 +323,13 @@ namespace UnityScript2CSharp
Console.WriteLine("Converting '{0}' ({1} scripts)", assemblyType, scripts.Count);
if (args.Verbose)
{
Console.WriteLine("Referenced assemblies:");
foreach(var r in references)
System.Console.WriteLine($"\t{r}");
}
Action<string, string, int> handler = (scriptPath, context, unsupportedCount) => HandleConvertedScript(scriptPath, context, args.RemoveOriginalFiles, args.Verbose, unsupportedCount);
if (args.DryRun)
handler = (_, __, ___) => {};

Просмотреть файл

@ -17,7 +17,7 @@ Before running the conversion tool:
1. Keep in mind that you'll have best results (i.e, a smoother conversion process) if your UnityScripts have *#pragma strict* applied to them.
1. Launch Unity editor (**preferably, 2018.2**) and make sure you allow APIUpdater to run and update any obsolete API usages. This is necessary to avoid compilation errors during the conversion.
1. Launch Unity editor (**preferably, 2018.1**) and make sure you allow APIUpdater to run and update any obsolete API usages. This is necessary to avoid compilation errors during the conversion.
Next step is to run the converter. For that we recomend trying the _Editor Unity Package Integration_ first: