<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Unity &#8211; wqh博客</title>
	<atom:link href="https://wangqianhong.com/tag/unity/feed/" rel="self" type="application/rss+xml" />
	<link>https://wangqianhong.com</link>
	<description>和而不同</description>
	<lastBuildDate>Fri, 26 Nov 2021 06:07:39 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://wangqianhong.com/wp-content/uploads/2020/09/cropped-1-1-1-32x32.png</url>
	<title>Unity &#8211; wqh博客</title>
	<link>https://wangqianhong.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Unity（三）&#124; 音频文件的Compression Format</title>
		<link>https://wangqianhong.com/2021/07/unity%ef%bc%88%e4%b8%89%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84compression-format/</link>
					<comments>https://wangqianhong.com/2021/07/unity%ef%bc%88%e4%b8%89%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84compression-format/#respond</comments>
		
		<dc:creator><![CDATA[wqh_work]]></dc:creator>
		<pubDate>Thu, 01 Jul 2021 02:02:06 +0000</pubDate>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[Unity]]></category>
		<guid isPermaLink="false">https://wangqianhong.com/?p=1515</guid>

					<description><![CDATA[<p>在Unity 中，音频文件一般有3种不同的压缩格式，它们分别是： PCM Vorbis ADPCM &#8230; <a href="https://wangqianhong.com/2021/07/unity%ef%bc%88%e4%b8%89%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84compression-format/" class="more-link read-more" rel="bookmark">继续阅读 <span class="screen-reader-text">Unity（三）&#124; 音频文件的Compression Format</span><i class="fa fa-arrow-right"></i></a></p>
<p><a rel="nofollow" href="https://wangqianhong.com/2021/07/unity%ef%bc%88%e4%b8%89%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84compression-format/">Unity（三）| 音频文件的Compression Format</a>最先出现在<a rel="nofollow" href="https://wangqianhong.com">wqh博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>在Unity 中，音频文件一般有3种不同的压缩格式，它们分别是：</p>



<ol><li>PCM</li><li>Vorbis</li><li>ADPCM</li></ol>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://wangqianhong.com/wp-content/uploads/2021/06/Unity3..jpg" alt="" class="wp-image-1517" width="436" height="229"/></figure>



<h3>PCM</h3>



<p>PCM 是一种无损、未压缩的编解码器格式。</p>



<p>仅就质量而言，PCM 是音频的最佳格式，因为它保留了原始音频的所有内容。它几乎不需要 CPU 处理就可以在 Unity 中播放，因为它不需要解压缩。</p>



<p>但是正因为没有进行压缩，所以音频保持了其原始大小。如果有许多未压缩的音频文件会很快导致你的APP过大。</p>



<h3>Vorbis</h3>



<p>Vorbis 是一种完全开放的通用音频格式，它是一种非常高效的解码算法，可提供高质量的有损压缩。</p>



<p>在减小文件大小的同时保持了音频数据中的音质。</p>



<p>这种格式的缺点是它需要更高的 CPU 资源来解压缩音频以进行播放。</p>



<p>默认情况下，Unity 将所有音频资源设置为 Vorbis。</p>



<h3>ADPCM</h3>



<p>ADPCM也是一种压缩算法，在 Unity 中提供固定的压缩比，这导致文件比原始 PCM 音频小 3.5 倍左右。</p>



<p>与 PCM 一样，解压或解码的成本非常低，与 PCM 相比仅略高一点，但文件大小却大大减小。</p>



<p>这种格式的缺点是压缩方法本身，ADPCM 压缩音频数据的方式有时会导致原始文件中不存在的失真或噪音。</p>



<h3>总结</h3>



<p>PCM是无损压缩，虽然占用 CPU 资源少，但文件要大得多。</p>



<p>Vorbis是一种非常高效的音频编解码算法，可提供高质量的有损压缩，但需要更多 CPU 资源进行解压缩。</p>



<p>ADPCM具有大约 3.5 的固定压缩比，虽然在 PCM 和 Vorbis之间取得了很好的折衷，但有时会在音频文件中引起不需要的噪声或失真。<br></p>
<p><a rel="nofollow" href="https://wangqianhong.com/2021/07/unity%ef%bc%88%e4%b8%89%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84compression-format/">Unity（三）| 音频文件的Compression Format</a>最先出现在<a rel="nofollow" href="https://wangqianhong.com">wqh博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wangqianhong.com/2021/07/unity%ef%bc%88%e4%b8%89%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84compression-format/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Unity（二）&#124; 音频文件的Load Type</title>
		<link>https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%ba%8c%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84load-type/</link>
					<comments>https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%ba%8c%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84load-type/#respond</comments>
		
		<dc:creator><![CDATA[wqh_work]]></dc:creator>
		<pubDate>Thu, 24 Jun 2021 14:00:09 +0000</pubDate>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[Unity]]></category>
		<guid isPermaLink="false">https://wangqianhong.com/?p=1506</guid>

					<description><![CDATA[<p>Unity2020中加载音频文件的时候，有三个选项： Decompress On Load Comp&#8230; <a href="https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%ba%8c%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84load-type/" class="more-link read-more" rel="bookmark">继续阅读 <span class="screen-reader-text">Unity（二）&#124; 音频文件的Load Type</span><i class="fa fa-arrow-right"></i></a></p>
<p><a rel="nofollow" href="https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%ba%8c%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84load-type/">Unity（二）| 音频文件的Load Type</a>最先出现在<a rel="nofollow" href="https://wangqianhong.com">wqh博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>Unity2020中加载音频文件的时候，有三个选项：</p>



<ol><li>Decompress On Load</li><li>Compressed In Memory</li><li>Streaming</li></ol>



<figure class="wp-block-image size-large"><img loading="lazy" width="369" height="171" src="https://wangqianhong.com/wp-content/uploads/2021/11/Unity1.jpeg" alt="" class="wp-image-1507"/></figure>



<h3>音频播放的基本原理</h3>



<p>在说明这三个选项之前，我们来看看Unity是如何播放音频文件的。</p>



<p>大多数音频设备都会把音频文件转换成 PCM 格式（无损、未压缩的格式）。解码器很可能会集成到软件中，或者在极少数情况下，可以用硬件或芯片来接管解码过程以减轻 CPU 负担。</p>



<p>这意味着：为了能够创建播放设备实际理解的音频信号，任何格式都需要将其转换为 PCM再进行播放。</p>



<p>说完播放原理再来说说存储，Unity的音频文件有2种方式存储，一种是在内存中，一种是在存储介质中。</p>



<p>将音频文件存储在内存（或 RAM，代表随机存取存储器）中是一种非常有效的音频数据准备方式，因为与存储介质（即硬盘或 SSD）相比，内存具有更高的读取速率，时间更快；但占用了内存空间。</p>



<p>明白了基本原理，我们再来看看具体的选项。</p>



<h3>Decompress On Load</h3>



<p>这个选项，是把音频文件完全解压和解码为 PCM 格式，然后再将其加载到内存中。</p>



<p>这样做的主要优点是被调用的音频文件已经准备好播放，只需要非常少的 CPU 来执行此操作。</p>



<p>此选项适合经常播放的一些小音频文件（例如脚步声和 UI 声音），因为它们不会占用太多内存空间，并且在一直播放时不需要额外的 CPU。</p>



<h3>Compressed In Memory</h3>



<p>这个选项，是把音频文件加载到内存中，但是以你定义的格式压缩（ADPCM、Vorbis、MP3 或其他格式），并不会解码为PCM格式。解压缩和解码仅在播放音频文件时发生。</p>



<p>这样做的优点是音频将保持压缩状态，但每次调用音频时可能都需要 CPU 进行解压缩和解码。</p>



<p>此选项适合不经常播放的音频文件，例如对象交互声音，随机环境声音等。</p>



<h3>Streaming</h3>



<p>上面2个选项都是把音频文件加载到内存中，而这个选项却是把音频文件放到存储介质中，不加载到内存，只在播放音频文件时才即时读取、解压缩和解码。</p>



<p>这样做的优点显而易见的就是不占用内存，但CPU使用高。</p>



<p>此选项适合那些大的音频文件，例如BGM。</p>



<h3>总结</h3>



<p>同一个音频文件，三个不同选项的测试结果如下：</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://wangqianhong.com/wp-content/uploads/2021/11/Unity2.jpeg" alt="" class="wp-image-1508" width="452" height="254"/></figure>



<p>Decompress on Load占用内存最大，但CPU使用率最小。<br>Compressed in Memory更像一个折衷的方案。<br>Steaming占用内存最小，但CPU使用率最高。</p>
<p><a rel="nofollow" href="https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%ba%8c%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84load-type/">Unity（二）| 音频文件的Load Type</a>最先出现在<a rel="nofollow" href="https://wangqianhong.com">wqh博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%ba%8c%ef%bc%89-%e9%9f%b3%e9%a2%91%e6%96%87%e4%bb%b6%e7%9a%84load-type/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Unity（一）&#124; Unity Hub安装Unity报错</title>
		<link>https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%b8%80%ef%bc%89-unity-hub%e5%ae%89%e8%a3%85unity%e6%8a%a5%e9%94%99/</link>
					<comments>https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%b8%80%ef%bc%89-unity-hub%e5%ae%89%e8%a3%85unity%e6%8a%a5%e9%94%99/#respond</comments>
		
		<dc:creator><![CDATA[wqh_work]]></dc:creator>
		<pubDate>Sat, 19 Jun 2021 11:21:36 +0000</pubDate>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[Unity]]></category>
		<guid isPermaLink="false">https://wangqianhong.com/?p=1528</guid>

					<description><![CDATA[<p>用Unity Hub直接安装Unity，并选择Android环境： 结果报错： 多次尝试之后，依然报&#8230; <a href="https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%b8%80%ef%bc%89-unity-hub%e5%ae%89%e8%a3%85unity%e6%8a%a5%e9%94%99/" class="more-link read-more" rel="bookmark">继续阅读 <span class="screen-reader-text">Unity（一）&#124; Unity Hub安装Unity报错</span><i class="fa fa-arrow-right"></i></a></p>
<p><a rel="nofollow" href="https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%b8%80%ef%bc%89-unity-hub%e5%ae%89%e8%a3%85unity%e6%8a%a5%e9%94%99/">Unity（一）| Unity Hub安装Unity报错</a>最先出现在<a rel="nofollow" href="https://wangqianhong.com">wqh博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>用Unity Hub直接安装Unity，并选择Android环境：</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-01.png" alt="" class="wp-image-1529" width="388" height="273" srcset="https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-01.png 807w, https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-01-768x542.png 768w, https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-01-425x300.png 425w" sizes="(max-width: 388px) 100vw, 388px" /></figure>



<p>结果报错：</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-03.png" alt="" class="wp-image-1531" width="386" height="225" srcset="https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-03.png 725w, https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-03-514x300.png 514w" sizes="(max-width: 386px) 100vw, 386px" /></figure>



<p>多次尝试之后，依然报错，既然不能自动安装，来我们就手动安装！</p>



<h3>安装包</h3>



<p>自动安装虽然失败了，但所有的安装包其实已经下载到了本地，我们可以在路径<code>C:\Users\你的用户名\AppData\Local\Temp</code>中直接搜索unity开头的临时文件夹（AppData是隐藏文件夹，需要在查看选项中勾上隐藏的项目）：</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1007" height="323" src="https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-05.png" alt="" class="wp-image-1539" srcset="https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-05.png 1007w, https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-05-768x246.png 768w, https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-05-850x273.png 850w" sizes="(max-width: 1007px) 100vw, 1007px" /></figure>



<p>可以看到Unity安装文件和Android相关压缩包，下面一步步说明如何配置Unity的android环境。</p>



<h3>Unity</h3>



<p>UnitySetup64-2020.3.23f1.exe和UnitySetup-Android-Support-for-Editor-2020.3.23f1.exe安装比较简单，这里就不展开细讲。</p>



<h3>JDK</h3>



<p>Unity使用的是OpenJDK 1.8版本，我们把jdk8u172-b11这个压缩包解压，这里我放在D盘下面，重命名为OpenJDK。</p>



<p>为JDK配置环境变量，右击此电脑->属性->高级系统设置，在弹出的系统属性窗口中选择高级->环境变量->系统变量->新建。</p>



<p>在变量名中输入JAVA_HOME，变量值中输入OpenJDK的路径，我这里就是D:\OpenJDK，然后点击确定。</p>



<p>打开系统变量的Path，加入2行：</p>



<pre class="wp-block-preformatted"><code>%JAVA_HOME%\bin</code>
<code>%JAVA_HOME%\jre\bin</code></pre>



<h3>SDK</h3>



<p>把sdk-tools-windows-4333796解压到D盘下面，重命名为AndroidSDK。</p>



<p>解压platform-tools_r28.0.1-windows，里面有一个platform-tools文件夹，把它移到AndroidSDK目录下面。</p>



<p>然后配置环境变量，这次打开用户变量中的Path，加入2行：</p>



<pre class="wp-block-preformatted"><code>D:\AndroidSDK\tools\bin</code>
<code>D:\AndroidSDK\platform-tools</code></pre>



<p>配置完成之后，打开cmd或者powershell，输入命令<code>sdkmanager.bat --list</code>，会看到报了一个could not be loaded的错：</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="960" height="198" src="https://wangqianhong.com/wp-content/uploads/2021/06/unity-20211125-06.png" alt="" class="wp-image-1543" srcset="https://wangqianhong.com/wp-content/uploads/2021/06/unity-20211125-06.png 960w, https://wangqianhong.com/wp-content/uploads/2021/06/unity-20211125-06-768x158.png 768w, https://wangqianhong.com/wp-content/uploads/2021/06/unity-20211125-06-850x175.png 850w" sizes="(max-width: 960px) 100vw, 960px" /></figure>



<p>在对应的目录下面创建一个repositories.cfg的空文件即可。</p>



<p>报错Android SDK is missing build-tools处理，使用sdkmanager安装&#8221;build-tools;29.0.2&#8243;：</p>



<p><code>sdkmanager.bat --install "build-tools;29.0.2"</code></p>



<p>报错Required API level 26处理，使用sdkmanager安装&#8221;platforms;android-26&#8243;：</p>



<p><code>sdkmanager.bat --install "platforms;android-26"</code></p>



<h3>NDK</h3>



<p>解压android-ndk-r19-windows-x86_64到D盘，把android-ndk-r19重命名为AndroidNDK即可。</p>



<h3>Gradle</h3>



<p>报错 gradle build failed，原因gradle需要外网环境，这里只能手动下载安装。</p>



<p>Unity2020使用的是gradle 6.1.1版本，可以从官网下载<a href="https://gradle.org/releases/" target="_blank" rel="noreferrer noopener">https://gradle.org/releases/</a>，找到6.1.1直接下载：</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://wangqianhong.com/wp-content/uploads/2021/11/unity-20211125-02.png" alt="" class="wp-image-1530" width="521" height="213"/></figure>



<p>下载完成，解压之后把文件夹gradle-6.1.1重命名为Gradle，然后放到D盘下面。</p>



<h3>Unity设置</h3>



<p>上面的环境设置完毕之后，我们就可以在Unity中进行设置：</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://wangqianhong.com/wp-content/uploads/2021/06/unity-20211125-07.png" alt="" class="wp-image-1549" width="537" height="421" srcset="https://wangqianhong.com/wp-content/uploads/2021/06/unity-20211125-07.png 801w, https://wangqianhong.com/wp-content/uploads/2021/06/unity-20211125-07-768x603.png 768w, https://wangqianhong.com/wp-content/uploads/2021/06/unity-20211125-07-382x300.png 382w" sizes="(max-width: 537px) 100vw, 537px" /></figure>



<p>设置完成之后，就可以顺利打包apk了!</p>
<p><a rel="nofollow" href="https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%b8%80%ef%bc%89-unity-hub%e5%ae%89%e8%a3%85unity%e6%8a%a5%e9%94%99/">Unity（一）| Unity Hub安装Unity报错</a>最先出现在<a rel="nofollow" href="https://wangqianhong.com">wqh博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wangqianhong.com/2021/06/unity%ef%bc%88%e4%b8%80%ef%bc%89-unity-hub%e5%ae%89%e8%a3%85unity%e6%8a%a5%e9%94%99/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
