Unity平台宏定义失效问题

平台宏定义

一般情况下的宏定义

Unity的平台宏定义,大家都知道,百度上也有好几篇相关的文章。官网上的介绍,是最清晰全面的,这里上个链接不做赘述。
Unity管网的平台宏定义
这篇文章主要关注在官网上的自定义宏定义。管网中也有相关的介绍,只是在项目出现相关问题时才注意到,这里做一些记录分享。

原因

我之所以关注这个问题,是在开发项目时,发现Unity本身的平台宏定义,不知道是什么原因,失效了。

#if UNITY_IPHONE
        		_StrPathURL = Application.dataPath + "/Raw/";
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR
        		_StrPathURL = Application.streamingAssetsPath + "/";
#elif UNITY_ANDROID
                _StrPathURL = Application.persistentDataPath + "/";
#else
        		_StrPathURL=string.Empty;
#endif

这是我之前项目中关于不同平台文件路径的区分。
当我使用其打包安卓时,文件却总是读不出来。我一开始是文件路径的问题,尝试了很多方法,消耗了很多时间在这上面,却总是出不来。然后是怀疑文件读取方法的问题,什么IO类、WWW类都试过了,搭配各种路径表达方式,这个地方真的是把我堵了一整天的时间,反复地试。当时真的没往平台宏定义的地方去想。

#if UNITY_STANDALONE_WIN || UNITY_EDITOR
        		_StrPathURL = Application.streamingAssetsPath + "/";
#elif UNITY_ANDROID
                _StrPathURL = Application.persistentDataPath + "/";
#else
        		_StrPathURL=string.Empty;
#endif

最后我才把注意力关注到宏定义上,怀疑是不是宏定义出了问题。由于是安卓平台要打包出来测,所以我就用了个笨办法测试,在游戏屏幕上建了个UI将路径直接赋值到这个UI上,显示出来。结果发现路径根本不是安卓平台的路径,为了确定我的猜想就在平台判断上做了个最简单的赋值。UNITY_EDITOR下赋值1;UNITY_ANDROID下赋值2。最后UI显示的是1。我这才发现平台宏定义根本没有起作用。
不起作用的原因,我也不清楚╮(╯▽╰)╭。这也不是这篇文章的重点。

自定义宏定义

我解决问题的方法,就是自定义宏定义
在Player Settings中设置:File---->Build Settings---->Player Settings---->Other Settings---->Scripting Define Symbols



在PC平台下,添加宏定义WINDOWS(使用单词可根据自己喜好定义),要与其他宏定义用“”分隔开。

在安卓平台下,添加宏定义ANDROID。若是IOS平台同理。
此时我们在不同的平台就有了不同的宏定义,可以此来进行平台区分。

#if WINDOWS || UNITY_EDITOR
        _StrPathURL = Application.streamingAssetsPath + "/";
#elif ANDROID
        //_StrPathURL = Application.persistentDataPath + "/";
        _StrPathURL = "jar:file://" + Application.dataPath + "!/assets/";
#else
        _StrPathURL = string.Empty;
#endif

这时项目中的路径便可正常运行。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天富儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值