Lunatic-Works / Nova

Programmer-friendly framework for visual novels (VN) / text-based adventure games (AVG) on Unity
MIT License
601 stars 78 forks source link

关于Unity的杂七杂八的问题(不定期更新) #6

Open woct0rdho opened 3 years ago

woct0rdho commented 3 years ago

如果在Unity Editor中开始游戏时闪退,先检查一下是不是硬盘满了

然后可以试试清空存档:在Unity Editor的上面的菜单中,点击Nova -> Clear All

如果演出方面遇到任何奇怪的问题,也可能需要清空存档

打包给别人测试时,也可能需要在别人的电脑上清空存档,存档和快捷键设置的位置详见: https://docs.unity3d.com/ScriptReference/Application-persistentDataPath.html 其他设置的位置详见: https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

(但是在游戏全部做完之后,打包给别人玩,别人之前也没有玩过测试版,那么正常情况下肯定不用清空存档,否则就是bug,请告诉我们)

如果用Unity Editor上面的那个按钮退出游戏模式,一般会有空引用之类的报错,不用管它。如果在游戏中正常退出游戏,应该没有报错,否则就是bug,请告诉我们

如果打开Unity Editor时出现报错Library/PackageCache/com.unity.render-pipelines.universal ...,建议升级Unity到最新的小版本(不用改2020/2021/2022的大版本),不方便的话也可以在package manager里降级URP到推荐的版本

如果build时Scripting Backend是Mono,并且游戏安装路径中有中文,可能会出现LuaRuntime的问题,用IL2CPP就不会有这个问题,详见mono/mono#7117

qiankanglai commented 1 year ago

最后这个中文的问题,我本地试了下这样可以解决。相当于强制走一发Encoding转换 而不是默认先尝试Ansi...

public static string lua_ptrtostring(IntPtr str, int len)
{
    /*
    string ss = Marshal.PtrToStringAnsi(str, len);

    if (ss == null)
    {
        byte[] buffer = new byte[len];
        Marshal.Copy(str, buffer, 0, len);
        return Encoding.UTF8.GetString(buffer);
    }

    return ss;
    */
    byte[] buffer = new byte[len];
    Marshal.Copy(str, buffer, 0, len);
    return Encoding.UTF8.GetString(buffer);
}

ps. 后来翻了下xlua处理方式发现是一样的2333

woct0rdho commented 1 year ago

好啊,但是这样会有性能损失,或者在某些情况下不兼容吗(不用UTF-8的平台应该只有Windows吧)

qiankanglai commented 1 year ago

兼容问题应该还好,因为Encoding.UTF8.GetString内部其实处理了。 或者就参考xlua那个 用UNITY_WSA && !UNITY_EDITOR包一下? PC上这点性能损失洒洒水了...

bluuueheart commented 8 months ago

你好,打开unity出现报错 Library/PackageCache/com.unity.render-pipelines.universal 的情况怎么办呢,我已经更新到最新小版本23.2.13f1c1

woct0rdho commented 8 months ago

你好,打开unity出现报错 Library/PackageCache/com.unity.render-pipelines.universal 的情况怎么办呢,我已经更新到最新小版本23.2.13f1c1

在package manager里找到跟URP相关的包,看它的所有版本,其中有一个版本旁边有绿色的verified,把它换成这个版本

bluuueheart commented 8 months ago

你好,打开unity出现报错 Library/PackageCache/com.unity.render-pipelines.universal 的情况怎么办呢,我已经更新到最新小版本23.2.13f1c1

在package manager里找到跟URP相关的包,看它的所有版本,其中有一个版本旁边有绿色的verified,把它换成这个版本

image没有找到verified,换成了这个版本,现在出现了Assets\Nova\Sources\Scripts\UIAssets\Nova\Sources\Scripts\InputFieldMinigameController.cs里的报错请问怎么办呀,麻烦了

woct0rdho commented 8 months ago

你发一下报错信息,如果东西多的话可以再开一个issue