首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用直接来自游戏目录的文件制作统一游戏

使用直接来自游戏目录的文件制作统一游戏
EN

Game Development用户
提问于 2016-08-25 00:27:37
回答 2查看 1.5K关注 0票数 3

对于敌人的统计和其他类型的信息,我决定不使用检查器字段或硬编码值,而是将值存储到某些XML和其他类型的文件中,并从脚本中读取值,从而获得所需的值。我希望这些文件保存在游戏文件夹中,而不是打包到*.assets文件中,因为我希望能够快速修改这个值,而不需要重新构建整个游戏。

那么,我如何在编辑器中标记资产,使其不应包含在*.assets中,而在游戏文件夹中保持不变的形式?

更新:我会稍微修改一下我想要达到的目标。我需要在游戏目录中有文件的可能性,所以我可以从游戏中读取它,我希望在编辑器和构建的游戏中都有这种可能性。因此,至于答案,我也将收到关于哪个文件夹被认为是在编辑器中的游戏文件夹。

EN

回答 2

Game Development用户

回答已采纳

发布于 2016-08-25 11:30:32

您需要将您的东西保存在流资产文件夹中:

http://docs.unity3d.com/Manual/StreamingAssets.html

如果在第4版下面使用的是统一,那么使用一些序列化程序时,应该使用whydoidoit序列化程序:

https://www.assetstore.unity3d.com/en/#!/content/3675

如果您使用的是更高的版本,您可以尝试使用TheSniperFan中的一个名为unity序列化-ng的改编版本:

https://gitgud.io/TheSniperFan/unityserializer-ng/tree/master-pre-5.4

或者是我的API,它是一个分叉和简化的版本,还有一些更多的东西,但是它仍然是非常无文档化和混乱的:

https://github.com/Ikillnukes/Lerp2API (它没有场景保护程序,但我会实现它)

您可以通过这样做来实现这一点,假设您有一个名为"myobject“的游戏对象,您可以执行myobject.SaveTreeObject();将其转换为一个byte[]变量(您可以使用System.IO.File.WriteAllBytes保存它),并使用LevelLoader.LoadObhectTree(动作)小心加载它,因为操作表示加载对象的函数。

我的API目前是这样做的。

祝好运。

票数 1
EN

Game Development用户

发布于 2016-08-25 08:54:12

将其放入资产文件夹中的编辑器文件夹中。

代码语言:javascript
运行
复制
using System.Diagnostics;
using UnityEditor;

public class CustomBuild {

    [MenuItem("MyTools/Windows Build With Postprocess")]
    public static void BuildGame()
    {
        // Get filename.
        string path = EditorUtility.SaveFolderPanel("Choose Location of Built Game", "", "");
        string[] levels = new string[] { "Assets/Scene1.unity"};

        // Build player.
        BuildPipeline.BuildPlayer(levels, path + "/BuiltGame.exe", BuildTarget.StandaloneWindows, BuildOptions.None);

        // Copy a file from the project folder to the build folder, alongside the built game.
        //This does not check if the file already exist or not you need to do this by yourself.
        FileUtil.CopyFileOrDirectory("Assets/test.txt", path + "/test.txt");

        // Run the game (Process class from System.Diagnostics).
        Process proc = new Process();
        proc.StartInfo.FileName = path + "/BuiltGame.exe";
        proc.Start();
    }
}

我不知道你怎么能在手机上做到这一点。例如,在Android上,当您的游戏第一次启动到设备上的某个外部目录时,您可能想要创建该文件,然后从那里修改它。也不确定它将如何在Mac上工作,因为我对Mac几乎一无所知。玩得开心;)

票数 1
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/128878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档