Skip to content

Commit f2e7b15

Browse files
fixed #478
1 parent 43c4d89 commit f2e7b15

File tree

7 files changed

+120
-24
lines changed

7 files changed

+120
-24
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,6 @@ UnityProject/Logs/Packages-Update.log
1818
UnityProject/Sandbox/*
1919
UnityProject/Logs/*
2020
UnityProject/Build/*
21-
UnityProject/HotUpdateScripts/.idea/*
21+
UnityProject/HotUpdateScripts/.idea/*
22+
UnityProject/Assets/JEngine.proj
23+
UnityProject/Assets/JEngine.proj.meta

UnityProject/Assets/Dependencies/JEngine/Editor/JEngineTools/EditorUpdates/EditorUpdate.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ static EditorUpdate()
2020
EditorApplication.update += AllowUnsafe.Update; //允许Unsafe code
2121
}
2222

23-
if (!SetData.hasAdded)
23+
if (!SetData.HasAdded)
2424
{
2525
EditorApplication.update += SetData.Update; //设置某些需要在后台设置的东西
2626
}

UnityProject/Assets/Dependencies/JEngine/Editor/JEngineTools/EditorUpdates/SetData.cs

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,47 +9,75 @@ namespace JEngine.Editor
99
{
1010
internal static class SetData
1111
{
12-
public static bool hasAdded;
13-
private static string path = "JEngine.lock";
12+
public static bool HasAdded;
13+
private static string _path = "JEngine.proj";
14+
private static JEngineProjData _data = new JEngineProjData();
15+
16+
public static void UpdateData(Action<JEngineProjData> func)
17+
{
18+
func.Invoke(_data);
19+
Span<byte> data = stackalloc byte[_data.Size()];
20+
_data.AsBinary(ref data);
21+
File.WriteAllBytes(Path.Combine(Application.dataPath, _path), data.ToArray());
22+
}
1423

1524
public static string GetPrefix()
1625
{
17-
string prefix = "";
18-
1926
//看看文件存不存在,不存在就创建和提示
20-
string fPath = Path.Combine(Application.dataPath, path);
27+
string fPath = Path.Combine(Application.dataPath, _path);
2128
if (!File.Exists(fPath))
2229
{
23-
prefix = Guid.NewGuid().ToString();
24-
File.WriteAllText(fPath, prefix);
25-
//提示看文档
26-
Debug.LogError(Setting.GetString(SettingString.NoticeText));
27-
EditorUtility.DisplayDialog(Setting.GetString(SettingString.Notice),
28-
Setting.GetString(SettingString.NoticeText), Setting.GetString(SettingString.Done));
29-
if (Setting.Language == JEngineLanguage.English)
30+
_data = new JEngineProjData();
31+
//兼容老版本
32+
bool flag = false;
33+
if (File.Exists(Path.Combine(Application.dataPath, "JEngine.lock")))
3034
{
31-
Application.OpenURL("https://docs.xgamedev.net/documents/0.8/");
35+
_data.Prefix = File.ReadAllText(Path.Combine(Application.dataPath, "JEngine.lock"));
36+
_data.EncryptPassword = PlayerPrefs.GetString($"{_data.Prefix}.EncryptPassword", "");
37+
File.Delete(Path.Combine(Application.dataPath, "JEngine.lock"));
3238
}
3339
else
3440
{
35-
Application.OpenURL("https://docs.xgamedev.net/zh/documents/0.8/");
41+
_data.Prefix = Guid.NewGuid().ToString();
42+
flag = true;
43+
}
44+
Span<byte> data = stackalloc byte[_data.Size()];
45+
_data.AsBinary(ref data);
46+
File.WriteAllBytes(fPath, data.ToArray());
47+
if (flag)
48+
{
49+
//提示看文档
50+
Debug.LogError(Setting.GetString(SettingString.NoticeText));
51+
EditorUtility.DisplayDialog(Setting.GetString(SettingString.Notice),
52+
Setting.GetString(SettingString.NoticeText), Setting.GetString(SettingString.Done));
53+
if (Setting.Language == JEngineLanguage.English)
54+
{
55+
Application.OpenURL("https://docs.xgamedev.net/documents/0.8/");
56+
}
57+
else
58+
{
59+
Application.OpenURL("https://docs.xgamedev.net/zh/documents/0.8/");
60+
}
3661
}
3762
InjectDefineSymbol();
3863
}
3964
else
4065
{
41-
prefix = File.ReadAllText(fPath);
66+
//读取文件
67+
Span<byte> data = File.ReadAllBytes(fPath);
68+
_data.FromBinary(ref data);
4269
}
4370

44-
return prefix;
71+
return _data.Prefix;
4572
}
4673

4774
public static void Update()
4875
{
4976
string prefix = GetPrefix();
5077
InjectDefineSymbol();
51-
hasAdded = true;
78+
HasAdded = true;
5279
Setting.SetPrefix(prefix);
80+
Setting.EncryptPassword = _data.EncryptPassword;
5381
}
5482

5583
private static void InjectDefineSymbol()
@@ -59,9 +87,9 @@ private static void InjectDefineSymbol()
5987
var group = BuildPipeline.GetBuildTargetGroup(target);
6088
var org = PlayerSettings.GetScriptingDefineSymbolsForGroup(group);
6189
var d = PlayerSettings.GetScriptingDefineSymbolsForGroup(group);
62-
string[] Symbols = new string[] { "ILRuntime" };
90+
string[] symbols = new string[] { "ILRuntime" };
6391
List<string> dfList = d.Split(';').ToList();
64-
dfList.AddRange(Symbols.Except(dfList));
92+
dfList.AddRange(symbols.Except(dfList));
6593
d = string.Join(";", dfList.Distinct().ToArray());
6694
if (org != d)
6795
PlayerSettings.SetScriptingDefineSymbolsForGroup(group, d);
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using System;
2+
using System.Runtime.InteropServices;
3+
4+
namespace JEngine.Editor
5+
{
6+
public class JEngineProjData
7+
{
8+
public string Prefix = "";
9+
public string EncryptPassword = "";
10+
public string Version = "0.8.0f6";
11+
12+
public int Size()
13+
{
14+
return (Prefix.AsSpan().Length + EncryptPassword.AsSpan().Length + Version.AsSpan().Length) * 2 + 3;
15+
}
16+
17+
public void AsBinary(ref Span<byte> data)
18+
{
19+
if (data.Length < Size())
20+
throw new Exception("data.Length < Size()");
21+
22+
var prefix = MemoryMarshal.Cast<char, byte>(Prefix.AsSpan());
23+
var encryptPassword = MemoryMarshal.Cast<char, byte>(EncryptPassword.AsSpan());
24+
var version = MemoryMarshal.Cast<char, byte>(Version.AsSpan());
25+
26+
data[0] = (byte)prefix.Length;
27+
prefix.CopyTo(data.Slice(1));
28+
data[prefix.Length + 1] = (byte)encryptPassword.Length;
29+
encryptPassword.CopyTo(data.Slice(prefix.Length + 2));
30+
data[prefix.Length + encryptPassword.Length + 2] = (byte)version.Length;
31+
version.CopyTo(data.Slice(prefix.Length + encryptPassword.Length + 3));
32+
}
33+
34+
public void FromBinary(ref Span<byte> data)
35+
{
36+
var prefixLength = data[0];
37+
Prefix = MemoryMarshal.Cast<byte, char>(data.Slice(1, prefixLength)).ToString();
38+
var encryptPasswordLength = data[prefixLength + 1];
39+
EncryptPassword = MemoryMarshal.Cast<byte, char>(data.Slice(prefixLength + 2, encryptPasswordLength))
40+
.ToString();
41+
var versionLength = data[prefixLength + encryptPasswordLength + 2];
42+
Version = MemoryMarshal
43+
.Cast<byte, char>(data.Slice(prefixLength + encryptPasswordLength + 3, versionLength)).ToString();
44+
}
45+
}
46+
}

UnityProject/Assets/Dependencies/JEngine/Editor/JEngineTools/JEngineProjData.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnityProject/Assets/Dependencies/JEngine/Editor/JEngineTools/Setting.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,15 @@ public static JEngineLanguage Language
261261
public static string EncryptPassword
262262
{
263263
get => PlayerPrefs.GetString($"{_prefix}.EncryptPassword", "");
264-
set => PlayerPrefs.SetString($"{_prefix}.EncryptPassword", value);
264+
set
265+
{
266+
if (string.IsNullOrEmpty(value))
267+
{
268+
return;
269+
}
270+
PlayerPrefs.SetString($"{_prefix}.EncryptPassword", value);
271+
SetData.UpdateData(data=>data.EncryptPassword = value);
272+
}
265273
}
266274

267275
/// <summary>

UnityProject/UserSettings/EditorUserSettings.asset

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,21 @@ EditorUserSettings:
66
serializedVersion: 4
77
m_ConfigSettings:
88
RecentlyUsedScenePath-0:
9-
value: 22424703114646720307186c052d56040f
9+
value: 2242470311464673021a393214224b1524120b25393a25353e663c37e6cf3a69add435ece93f70283c11fb721130082beb
1010
flags: 0
1111
RecentlyUsedScenePath-1:
12-
value: 2242470311464673021a393214224b1524120b25393a25353e663c37e6cf3a69add435ece93f70283c11fb721130082beb
12+
value: 22424703114646720307181615304b231512162f7a7b7e627f7d4e60b2b4646fb2b56fb0be6a7129370bfb25
1313
flags: 0
1414
RecentlyUsedScenePath-2:
15+
value: 22424703114646720307181615304b231512162f7a7b7e627f7d4e60b2b8626fb1b160bdb36a7129370bfb25
16+
flags: 0
17+
RecentlyUsedScenePath-3:
18+
value: 2242470311464673021a393214224b1524120b25393a25353e663032ebee7b0be1e238eca81d3e313c50a1290a371526
19+
flags: 0
20+
RecentlyUsedScenePath-4:
21+
value: 22424703114646720307186c052d56040f
22+
flags: 0
23+
RecentlyUsedScenePath-5:
1524
value: 2242470311464673021a393214224b1524120b25393a25353e663032ebee7b0be1e238eca81d3e313c4cfa320d2a18
1625
flags: 0
1726
vcSharedLogLevel:

0 commit comments

Comments
 (0)