Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在重新启动游戏之前,streamWriter不会应用更改。

在重新启动游戏之前,streamWriter不会应用更改。
EN

Stack Overflow用户
提问于 2022-04-29 02:23:39
回答 1查看 62关注 0票数 2

我正在用一个在.txt中编写级别数据的编辑器级别来制作一个统一游戏

我的问题是,对文件的更改没有正确应用,因为我只能在重新启动游戏时才能看到它们。

当播放机创建一个新级别时,我使用以下方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TextAsset txtFile = Resources.Load<TextAsset>("Levels");
StreamWriter streamWriter = new StreamWriter(new FileStream("Assets/Resources/" + levelsManager.filename + ".txt", FileMode.Truncate, FileAccess.Write));

在方法的末尾,我关闭了StreamWriter。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    streamWriter.Flush();
    streamWriter.Close();
    streamWriter.Dispose();

此外,如果用户创建多个级别,则只保存最后一个级别。

将文件修改为附件不起作用,因为在重新启动游戏并创建一个级别之后,它还会再次创建存储级别。

是否有一种刷新文档的方法,使我不必每次创建一个级别时都重新启动游戏?

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-29 02:33:42

您只需要使用AssetDatabase.Refresh来刷新Unity中的资产。

然而,

当玩家创建一个新的级别时,我使用

请注意,所有这些都不会在构建的应用程序中工作!

在构建应用程序之后,Resources只读。无论如何,来自Best practices -> Resources的注意事项

,不要用它!

您可能更愿意将默认文件存储在StreamingAssets中,然后使用Application.streamingassetsPath,然后在构建中使用Application.persistentDataPath代替,然后回退到streamingAssetsPath进行只读(同样,构建后StreamingAssets是只读的)。

例如,像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public string ReadlevelsFile()
{
    try
    {
#if UNITY_EDITOR
        // In the editor always use "Assets/StreamingAssets"
        var filePath = Path.Combine(Application.streamingAssetsPath, "Levels.txt");
#else
        // In a built application use the persistet data
        var filePath = Path.Combine(Application.persistentDataPath, "Levels.txt");
        
        // but for reading use the streaming assets on as fallback
        if (!File.Exists(filePath))
        {
            filePath = Path.Combine(Application.streamingAssetsPath, "Levels.txt");
        }
#endif
        return File.ReadAllText(filePath);
    }
    catch (Exception e)
    {
        Debug.LogException(e);
        return "";
    }
}

public void WriteLevelsFile(string content)
{
    try
    {
#if UNITY_EDITOR
        // in the editor always use "Assets/StreamingAssets"
        var filePath = Path.Combine(Application.streamingAssetsPath, "Levels.txt");
        // mke sure to create that directory if not exists yet
        if(!Directory.Exists(Application.streamingAssetsPath))
        {
            Directory.CreateDirectory(Application.streamingAssetsPath);
        }
#else
        // in a built application always use the persistent data for writing
        var filePath = Path.Combine(Application.persistentDataPath, "Levels.txt");
#endif
        
        File.WriteAllText(filePath, content);

#if UNITY_EDITOR
        // in Unity need to refresh the data base
        UnityEditor.AssetDatabase.Refresh();
#endif
    }
    catch(Exception e)
    {
        Debug.LogException(e);
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72056470

复制
相关文章
MySQL 计算两个日期之间相差的秒数 SQL
update h5perf_task set run_state = 0 where id in (SELECT t.id from (SELECT * FROM h5perf_task WHERE run_state = 2 and UNIX_TIMESTAMP( now() )-UNIX_TIMESTAMP(begin_run_time) > 420) t);
一个会写诗的程序员
2018/08/17
3.5K0
sql server 日期转字符串_db2 日期转字符串
While working with raw data, you may frequently face date values stored as text. Converting these values to a date data type is very important since dates may be more valuable during analysis. In SQL Server, converting a string to date can be achieved in different approaches.
全栈程序员站长
2022/11/08
3.5K0
SQL---计算两个日期之间的时间差
在进行日期处理的时候,有时会需要计算一下两个日期之间相差几年零几个月,这里记录一下,如何用mysql数据库和java结合,准确的拿到两个日期之间的时间差。
IT云清
2019/01/22
7.8K0
Java获取两个日期之间的日期
/** * 获取两个日期之间的日期 * @param start 开始日期 * @param end 结束日期 * @return 日期集合 */ private List<Date> getBetweenDates(Date start, Date end) { List<Date> result = new ArrayList<Date>(); Calendar tempStart = Calendar.g
水煮麥楽雞
2022/11/20
6.1K0
php计算两个日期之间的间隔,避免导出大量数据
在做系统业务功能的时候,有的时候业务人员会进行超大范围地导出excel表格,导致内存、CPU占用飙升。
宣言言言
2019/12/17
2.4K0
日期sql
select date_add(curdate(),interval -day(curdate())+1 day) 2020-01-01 今天所在月份第一天
Centy Zhao
2020/02/11
6560
sql语句日期格式_sql日期类型怎么写
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08.177 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08
全栈程序员站长
2022/11/01
2.5K0
mysql计算日期之间相差的天数
有两种方式可以获得mysql两个日期之间的差值,一种是使用TO_DAYS函数,另一种是datediff函数
用户8983410
2021/11/01
4.3K0
golang如何计算两个日期之间的日期差?
golang如何计算两个日期之间的日期差? 日期格式:“2017-09-01” ,“2018-03-11”
双面人
2022/09/28
7.4K0
如何用Python获取两个日期之间的日期?
问:如何用Python获取两个日期之间的日期? def date_range(start, end): delta = end - start # as timedelta days = [start + timedelta(days=i) for i in range(delta.days + 1)] return days start_date = datetime(2020, 12, 1) end_date = datetime(2020, 12, 5) print(d
TalkPython
2020/12/11
5.7K0
SQL Server的日期计算
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
用户8983410
2021/11/02
2.2K0
[php][零散代码]php日期计算
[php][零散代码]php日期计算 <?php $startData = "2020-01-1"; $stopData = "2020-01-31"; $s = new \DateTime(
landv
2020/04/25
2.7K0
SQL表之间的关系
要在表之间强制执行引用完整性,可以定义外键。修改包含外键约束的表时,将检查外键约束。
用户7741497
2022/06/06
2.5K0
使用KVM克隆用于Oracle DB的主机
首先,通过现有的vm1「在上篇文章 使用KVM创建OEL虚拟机 已创建」克隆出一个vm,名字叫做db1,然后修改一些配置,使其更适用于Oracle DB的主机。
Alfred Zhao
2023/01/08
7400
Sql常用日期格式
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm  例如:  select getdate()  2004-09-12 11:06:08.177  整理了一下SQL Server里面可能经常会用到的日期格式转换方法:  举例如下:  select CONVERT(varchar, getdate(), 120 )  2004-09-12 11:06:08
javascript.shop
2019/09/04
2.1K0
用于查询的日期类型转换帮助类
本文转载:http://www.cnblogs.com/iamlilinfeng/p/3378659.html
跟着阿笨一起玩NET
2018/09/19
7650
用于查询的日期类型转换帮助类
sql 日期格式汇总
SQLserver中用convert函数转换日期格式2008-01-15 15:51SQLserver中用convert函数转换日期格式 SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08.177 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 ) 200
用户1217611
2018/01/30
2.2K0
SQL基础日期函数
1 --dateadd 将制定的数值添加到指定的日期部分后的日期 select dateadd(mm,4,'01/01/99') 2 -- 返回:以当前的日期格式返回05/01/99 3 4 --datediff 二个日期之间的指定日期部分的区别 select datediff(mm,'01/01/99','05/01/99') 5 --返回:4 6 7 --datename 日期中指定日期部分的字符串形式 select datename(dw,'01/01/2000')
用户1112962
2018/07/04
2.1K0
SQL 获取最长的日期序列
有一张学习打卡表 his_sign 表,简单起见,只设置了两个字段(id,create_ts),一个是主键,另一个是打卡时间。his_sign 表的数据如下,我们要统计出这张表里面最长的连续打卡记录。
白日梦想家
2020/07/20
2.5K0
sql 日期格式汇总
SQLserver中用convert函数转换日期格式2008-01-15 15:51SQLserver中用convert函数转换日期格式
全栈程序员站长
2022/07/11
2.1K0

相似问题

如何让Traefik信任我们公司的CA来生成letsencrypt证书?

179

使用受信任的CA创建SSL证书

23

购买CA证书后,我是否也会信任其他公司从该CA证书生成的服务证书?

25

在istio级别上信任CA证书

10

Ngnix SSL信任库/ca证书规范

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文