<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Unity基础组件 - Tag - MenmaTop</title><link>https://menma.top/tags/unity%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6/</link><description>Unity基础组件 - Tag - MenmaTop</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Thu, 05 Sep 2024 11:09:00 +0800</lastBuildDate><atom:link href="https://menma.top/tags/unity%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6/" rel="self" type="application/rss+xml"/><item><title>Unity视频播放</title><link>https://menma.top/posts/unity/2024/09/unity%E8%A7%86%E9%A2%91%E6%92%AD%E6%94%BE/</link><pubDate>Thu, 05 Sep 2024 11:09:00 +0800</pubDate><author>mona</author><guid>https://menma.top/posts/unity/2024/09/unity%E8%A7%86%E9%A2%91%E6%92%AD%E6%94%BE/</guid><description><![CDATA[<h2 id="视频剪辑导入相关设置">视频剪辑导入相关设置</h2>
<p><strong>sRGB</strong>
是否开启sRGB
sRGB是微软联合惠普、三菱、爱普生等厂商联合开发的通用色彩标准
它的主要作用就是避免在不同设备出现色差
一般默认让它勾选即可</p>
<p><strong>Transcode</strong>
是否开启转码</p>
<p><strong>Dimensions</strong>
控制源文件内容的大小调整方式</p>
<ul>
<li>Original
保持原始大小</li>
<li>Three Quarter Res
将源大小调整为其原始宽度和高度的四分之三</li>
<li>Half Res
将源大小调整为其原始宽度和高度的一半</li>
<li>Quarter Res
将源大小调整为其原始宽度和高度的四分之一</li>
<li>Square(1024x1024)
将源大小调整为1024x1024正方形图像。宽高比可控</li>
<li>Square(512x512)
将源大小调整为512x512正方形图像。宽高比可控</li>
<li>Square(256x256)
将源大小调整为256x256正方形图像。宽高比可控</li>
<li>Custom
将源大小调整为自定义分辨率。宽高比可控</li>
</ul>
<p><strong>Codec</strong>
选择用于转码的解编码器</p>
<ul>
<li>Auto
为目标平台选择最合适的视频编解码器</li>
<li>H264
MPEG–4 高级视频编码 (AVC) 视频编解码器，受大多数平台上的硬件支持</li>
<li>H265
MPEG-H Part 2 或高效视频编码 (HEVC) 视频编解码器，受某些平台上的硬件支持</li>
<li>VP8
VP8视频编解码器，受到大多数平台上的软件支持，并受到 Android 和 WebGL 等几个平台上的硬件支持。</li>
</ul>
<p><strong>Bitrate Mode</strong>
相对于所选编解码器的基线配置文件的低、中或高比特率</p>
<p><strong>Spatial Quality</strong>
此设置决定视频图像在转码过程中是否压缩大小，缩小意味着它们占用的存储空间更少。但是，调整图像大小也会导致在播放期间出现模糊。</p>
<p><strong>Keep Alpha</strong>
保留Alpha透明通道并在转码期间将其编码
仅对具有Alpha通道的源显示此属性</p>
<p>注意：Android平台的原生 VP8 支持中不包括透明度支持，这意味着必须启用转码，以便 Unity 使用其内部 Alpha 表示方法。</p>
<p><strong>Deinterlace（去交错设置）</strong>
控制隔行扫描源在转码期间如何解除隔行扫描</p>]]></description></item><item><title>ScriptableObject</title><link>https://menma.top/posts/unity/2024/07/scriptableobject/</link><pubDate>Tue, 23 Jul 2024 16:11:00 +0800</pubDate><author>mona</author><guid>https://menma.top/posts/unity/2024/07/scriptableobject/</guid><description><![CDATA[<h2 id="scriptableobject是什么">ScriptableObject是什么</h2>
<p>ScriptableObject是Unity提供的一个数据配置存储基类</p>
<p>他是一个可以用来保存大量数据的数据容器</p>
<p>就像是可以自定义的数据资源文件</p>
<p>他是一个类似MonoBehvior的基类</p>
<p>需要我们继承他来使用</p>
<h2 id="scriptableobject的作用">ScriptableObject的作用</h2>
<ol>
<li>数据复用（多个对象可以使用一个配置）</li>
<li>配置文件（配置数据中的数据）</li>
<li>编辑模式下的数据持久化</li>
</ol>
<h2 id="scriptableobject的好处">ScriptableObject的好处</h2>
<ol>
<li>我们可以直接在Inspector窗口编辑配置数据，可以利用它来做配置文件</li>
<li>处理重复数据，减少数据拷贝时造成的内存占用，可以利用它来做公共数据</li>
<li>可以方便的处理数据带来的多态行为</li>
</ol>
<h2 id="创建scriptableobject数据容器">创建ScriptableObject数据容器</h2>
<ol>
<li>继承ScriptableObject类</li>
<li>在该类中声明成员（变量，方法等）</li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="kd">public</span> <span class="n">clss</span> <span class="n">Test</span> <span class="p">:</span> <span class="n">ScriptableObject</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kt">int</span> <span class="n">a</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<h2 id="根据自定义的scriptableobject数据容器创建数据文件">根据自定义的ScriptableObject数据容器创建数据文件</h2>
<p><strong>方法1：为类添加CreateAssetMenu通过菜单创建资源特性</strong></p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="na">[CreateAssetMenu(fileName = &#34;默认文件名&#34;, menuName = &#34;在Asset/Create菜单中显示的名字&#34;, order = 再Asset/Create菜单中的位置(多个时可以通过它来调整顺序))]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="n">clss</span> <span class="n">Test</span> <span class="p">:</span> <span class="n">ScriptableObject</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kt">int</span> <span class="n">a</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<p><strong>方法2：利用ScriptableObject的静态方法创建数据对象</strong></p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="kd">public</span> <span class="k">class</span> <span class="nc">ScriptableObjectTool</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"><span class="na">    [MenuItem(&#34;ScriptableObject/CreateMyData&#34;)]</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kd">static</span> <span class="k">void</span> <span class="n">CreateMyData</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">//书写创建数据资源文件的代码</span>
</span></span><span class="line"><span class="cl">        <span class="n">MyData</span> <span class="n">asset</span> <span class="p">=</span> <span class="n">ScriptableObject</span><span class="p">.</span><span class="n">CreateInstance</span><span class="p">&lt;</span><span class="n">MyData</span><span class="p">&gt;();</span>
</span></span><span class="line"><span class="cl">        <span class="c1">//通过编辑器API 根据数据创建一个数据资源文件</span>
</span></span><span class="line"><span class="cl">        <span class="n">AssetDatabase</span><span class="p">.</span><span class="n">CreateAsset</span><span class="p">(</span><span class="n">asset</span><span class="p">,</span> <span class="s">&#34;Assets/Resources/MyDataTest.asset&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="c1">//保存创建的资源</span>
</span></span><span class="line"><span class="cl">        <span class="n">AssetDatabase</span><span class="p">.</span><span class="n">SaveAssets</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">        <span class="c1">//刷新界面</span>
</span></span><span class="line"><span class="cl">        <span class="n">AssetDatabase</span><span class="p">.</span><span class="n">Refresh</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<h2 id="scriptableobject数据文件的使用">ScriptableObject数据文件的使用</h2>
<ol>
<li>Inspector面板中拖拽</li>
<li>通过资源加载的方式获取</li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"> <span class="n">MyData</span> <span class="n">data</span> <span class="p">=</span> <span class="n">Resources</span><span class="p">.</span><span class="n">Load</span><span class="p">&lt;</span><span class="n">MyData</span><span class="p">&gt;(</span><span class="s">&#34;MyDataTest&#34;</span><span class="p">);</span></span></span></code></pre></div></div>
<h2 id="scriptableobject的生命周期函数">ScriptableObject的生命周期函数</h2>
<ul>
<li>Awake 数据文件创建时调用</li>
<li>OnDestroy ScriptableObject 对象将被销毁时调用</li>
<li>OnDisable ScriptableObject 对象销毁时、即将重新加载脚本程序集时 调用</li>
<li>OnEnable ScriptableObject 创建或者加载对象时调用</li>
<li>OnValidate 编辑器才会调用的函数，Unity在加载脚本或者Inspector窗口中更改值时调用</li>
</ul>
<h2 id="在游戏运行中创建scriptableobject对象非持久化">在游戏运行中创建ScriptableObject对象（非持久化）</h2>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="n">MyData</span> <span class="n">data</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">data</span> <span class="p">=</span> <span class="n">ScriptableObject</span><span class="p">.</span><span class="n">CreateInstance</span><span class="p">(</span><span class="s">&#34;MyData&#34;</span><span class="p">)</span> <span class="k">as</span> <span class="n">MyData</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="c1">//泛型</span>
</span></span><span class="line"><span class="cl"><span class="n">data</span> <span class="p">=</span> <span class="n">ScriptableObject</span><span class="p">.</span><span class="n">CreateInstance</span><span class="p">&lt;</span><span class="n">MyData</span><span class="p">&gt;();</span></span></span></code></pre></div></div>]]></description></item><item><title>导航寻路系统(Navigation)</title><link>https://menma.top/posts/unity/2024/07/%E5%AF%BC%E8%88%AA%E5%AF%BB%E8%B7%AF%E7%B3%BB%E7%BB%9Fnavigation/</link><pubDate>Tue, 02 Jul 2024 20:55:00 +0800</pubDate><author>mona</author><guid>https://menma.top/posts/unity/2024/07/%E5%AF%BC%E8%88%AA%E5%AF%BB%E8%B7%AF%E7%B3%BB%E7%BB%9Fnavigation/</guid><description><![CDATA[<h2 id="什么是导航寻路系统">什么是导航寻路系统</h2>
<ul>
<li>Unity中的导航寻路系统是能够让我们在游戏世界当中</li>
<li>让角色能够从一个起点准确的到达另一个终点</li>
<li>并且能够自动避开两个点之间的障碍物选择最近最合理的路径进行前往</li>
<li>Unity中的导航寻路系统的本质</li>
<li>就是在A星寻路算法的基础上进行了拓展和优化</li>
</ul>
<h2 id="我们要学习那些内容">我们要学习那些内容</h2>
<ol>
<li>导航网格(NavMesh)的生成——要想角色能够在场景中自动寻路产生行进路径，那么必须得先有场景地形数据，导航网格生成就是生成用于寻路的地形数据</li>
<li>导航网格寻路组件(NavMesh Agent)——寻路组件就是帮助我们根据地形数据计算路径让角色动起来的关键</li>
<li>导航网格连接组件(Off-Mesh Link)——当地形中间有断层，想让角色能从一个平面跳向另一个平面，网格连接组件时关键</li>
<li>导航网格动态障碍物组件(NavMesh Obstacle)——地形中可能存在的可以移动或动态销毁的障碍物需要挂载的组件</li>
</ol>
<h2 id="使用导航寻路系统并生成导航网络">使用导航寻路系统并生成导航网络</h2>
<ol>
<li>Window-&gt;AI-&gt;Navigation</li>
<li>选择Object页签 选择地形物体后 将Navigation Static 选中
<ul>
<li>选中Navigation Static实际上是将物体设置为了Static静态</li>
<li></li>
</ul>
</li>
<li>切换到bake页签 进行相关设置后 Bake生成</li>
</ol>
<h2 id="object-场景对象设置页签">Object 场景对象设置页签</h2>
<p></p>
<ul>
<li><strong>Sceme Filter</strong>
场景过滤器，配合Hierarchy窗口使用
All：显示场景上所有对象
MeshRenderers：显示挂载的网格渲染器的对象
Terrains：显示挂载了地形脚本的对象</li>
<li><strong>Navigation Static</strong>
导航静态物体开关</li>
<li><strong>Generate OffMeshLinks</strong>
生成网格连接点开关</li>
<li><strong>Navigation Area</strong>
导航区域选择，配合Areas页签使用</li>
</ul>
<h2 id="bake导航数据烘焙页签">Bake导航数据烘焙页签</h2>
<p></p>]]></description></item><item><title>角色控制器(Character Controller)</title><link>https://menma.top/posts/unity/2024/07/%E8%A7%92%E8%89%B2%E6%8E%A7%E5%88%B6%E5%99%A8character-controller/</link><pubDate>Tue, 02 Jul 2024 16:49:00 +0800</pubDate><author>mona</author><guid>https://menma.top/posts/unity/2024/07/%E8%A7%92%E8%89%B2%E6%8E%A7%E5%88%B6%E5%99%A8character-controller/</guid><description><![CDATA[<h2 id="角色控制器是什么">角色控制器是什么？</h2>
<p>角色控制器是让角色可以受制于碰撞，但是不会被刚体所牵制</p>
<p>如果我们对角色使用刚体判断碰撞，可能会出现一些奇怪的表现</p>
<p>比如：</p>
<ol>
<li>在斜坡上往下滑动</li>
<li>不加约束的情况碰撞可能让自己被撞飞等等</li>
</ol>
<p>而角色控制器会让角色表现的更加稳定</p>
<p>Unity提供了角色控制器脚本专门用于控制角色</p>
<p><strong>注意</strong></p>
<ul>
<li>添加角色控制器后，不用再添加刚体</li>
<li>能检测碰撞函数</li>
<li>能检测触发器函数</li>
<li>能被射线检测</li>
</ul>
<h2 id="角色控制器的使用">角色控制器的使用</h2>
<ol>
<li>为对象添加角色控制器组件：Character Controller</li>
<li>使用代码控制</li>
</ol>
<h2 id="角色控制器参数">角色控制器参数</h2>
<p></p>
<ul>
<li>
<p><strong>Slope Limit</strong></p>
<p>坡度度数限制，大于该值的斜坡上不去</p>
</li>
<li>
<p><strong>Step Offset</strong></p>
<p>台阶偏移值，单位为米，低于这个值的台阶才能上去，该值不能大于角色控制器的高度</p>
</li>
<li>
<p><strong>Skin Width</strong></p>
<p>皮肤的宽度，两个碰撞器可以穿透彼此最大的皮肤宽度</p>
<p>较大的值可以减少抖动，较小的值可能会导致角色卡住</p>
<p>建议设置为半径的10%</p>
</li>
<li>
<p><strong>MinMoveDistance</strong></p>
<p>最小的移动距离</p>
<p>一般设置为0，可以用来减少抖动</p>
</li>
</ul>
<h2 id="代码相关">代码相关</h2>
<p><strong>获得角色控制器</strong></p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="kt">var</span> <span class="n">cc</span> <span class="p">=</span> <span class="n">GetComponent</span><span class="p">&lt;</span><span class="n">CharacterController</span><span class="p">&gt;();</span></span></span></code></pre></div></div>
<p><strong>判断是否接触到地面</strong></p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="k">if</span> <span class="p">(</span> <span class="n">cc</span><span class="p">.</span><span class="n">isGrounded</span> <span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">print</span><span class="p">(</span><span class="s">&#34;接触地面了&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<p><strong>移动</strong></p>]]></description></item><item><title>Inspector窗口</title><link>https://menma.top/posts/unity/2024/06/inspector%E7%AA%97%E5%8F%A3/</link><pubDate>Mon, 17 Jun 2024 11:46:00 +0800</pubDate><author>mona</author><guid>https://menma.top/posts/unity/2024/06/inspector%E7%AA%97%E5%8F%A3/</guid><description><![CDATA[<h2 id="inspector窗口可编辑的变量">Inspector窗口可编辑的变量</h2>
<ul>
<li>Inspector显示的可编辑内容就是脚本的成员变量</li>
<li>私有（private）的和保护（protected）的默认不会显示 可在变量前面加上强制序列化字段特性[SerializeField]使其显示出来</li>
<li>公共的（public）默认会在Inspector窗口中显示出来，如果不想让其显示可在变量前增加特性[HideInInspector]</li>
<li>大部分的类型都可以显示编辑，字典不可以被Inspector窗口显示</li>
<li>可让自定义类型可以被访问 加上序列化特性[System.Serializable]</li>
</ul>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="c1">//在inspector中显示字段</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">int</span> <span class="n">test</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="c1">//不再inspector显示公共的字段</span>
</span></span><span class="line"><span class="cl"><span class="na">[HideInInspector]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">int</span> <span class="n">test1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="c1">//在inspector显示私有和保护的字段</span>
</span></span><span class="line"><span class="cl"><span class="na">[SerializeField]</span>
</span></span><span class="line"><span class="cl"><span class="kd">private</span> <span class="kt">int</span> <span class="n">test2</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="c1">//让自定义类型可以被访问</span>
</span></span><span class="line"><span class="cl"><span class="na">[System.Serializable]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="k">class</span> <span class="nc">test3</span><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kt">int</span> <span class="n">age</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kt">bool</span> <span class="n">sex</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span> 
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="n">test3</span> <span class="n">test4</span><span class="p">;</span></span></span></code></pre></div></div>
<h3 id="一些辅助特性">一些辅助特性</h3>
<ol>
<li><strong>分组说明特性Header 为成员分组</strong></li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="na">[Header(&#34;基础属性&#34;)]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">int</span> <span class="n">age</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">bool</span> <span class="n">sex</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="na">[Header(&#34;战斗属性&#34;)]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">int</span> <span class="n">atk</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">int</span> <span class="n">def</span><span class="p">;</span></span></span></code></pre></div></div>
<ol start="2">
<li><strong>悬停注释Tooltip为变量添加说明</strong></li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="na">[Tooltip(&#34;闪避&#34;)]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">int</span> <span class="n">miss</span><span class="p">;</span></span></span></code></pre></div></div>
<ol start="3">
<li><strong>间隔特性Space 让两个字段出现间隔</strong></li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="na">[Space()]</span></span></span></code></pre></div></div>
<ol start="4">
<li><strong>修饰数值的滑条范围Range</strong></li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="na">[Range(0,10)]</span><span class="c1">//[Range(最小值,最大值)]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">float</span> <span class="n">luck</span><span class="p">;</span></span></span></code></pre></div></div>
<ol start="5">
<li><strong>多行显示字符串 不写参数默认显示3行</strong></li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="na">[Multiline(5)]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">string</span> <span class="n">tips</span><span class="p">;</span></span></span></code></pre></div></div>
<ol start="6">
<li><strong>滑动条显示字符串 不写参数默认就是超过3行显示滚动条</strong></li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="na">[TextArea(3,4)]</span><span class="c1">//最少显示3行，最多4行，超过4行显示滚动条</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">string</span> <span class="n">myLife</span><span class="p">;</span></span></span></code></pre></div></div>
<ol start="7">
<li><strong>为变量添加快捷方法ContextMenuItem</strong></li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="c1">//[ContextMenuItem(&#34;显示按钮名&#34;, &#34;方法名&#34;)]</span>
</span></span><span class="line"><span class="cl"><span class="na">[ContextMenuItem(&#34;重置钱&#34;, &#34;Test&#34;)]</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kt">int</span> <span class="n">money</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="kd">private</span> <span class="k">void</span> <span class="n">Test</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">money</span> <span class="p">=</span> <span class="m">99</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<ol start="8">
<li><strong>为方法添加特性能够在Inspector中执行[ContextMenu(&ldquo;测试函数&rdquo;)]</strong></li>
</ol>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-c#">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-c#" data-lang="c#"><span class="line"><span class="cl"><span class="na">[ContextMenu(&#34;哈哈哈哈&#34;)]</span>
</span></span><span class="line"><span class="cl"><span class="kd">private</span> <span class="k">void</span> <span class="n">TestFun</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">print</span><span class="p">(</span><span class="s">&#34;测试方法&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>]]></description></item><item><title>LineRenderer画线</title><link>https://menma.top/posts/unity/2024/06/linerenderer%E7%94%BB%E7%BA%BF/</link><pubDate>Mon, 17 Jun 2024 11:46:00 +0800</pubDate><author>mona</author><guid>https://menma.top/posts/unity/2024/06/linerenderer%E7%94%BB%E7%BA%BF/</guid><description><![CDATA[<h2 id="linerenderer-画线">LineRenderer 画线</h2>
<p>LineRenderer是Unity提供的一个用于画线的组件使用它我们可以在场景中绘制线段</p>
<p>一般可以用于</p>
<ul>
<li>绘制攻击范围</li>
<li>武器红外线</li>
<li>辅助功能</li>
<li>其他画线功能</li>
</ul>
<h3 id="linrenderer组件属性">LinRenderer组件属性</h3>
<p>Loop 是否连接终点和起点</p>
<p>Positions线段的点</p>
<ul>
<li>Size 点的数量 两个点构成一个线段  xyz轴对应世界坐标</li>
<li>width 可以修改线的粗细 通过曲线</li>
</ul>
<p>Color 颜色</p>
<p>Corner Vertices 角顶点，圆角 增加此属性可以使线角看起来更圆</p>
<p>End Cap Vertices 终点和起点的圆角</p>
<p>Use World Space 是否使用世界坐标系</p>
<p>Materials 线使用的材质球</p>
<h3 id="不常用属性">不常用属性</h3>
<p>Alignment 对其方式</p>
<ul>
<li>View 视点 线段对这摄像机</li>
<li>Transform Z 线段面向其Z轴</li>
</ul>
<p>Texture Mode纹理模式</p>
<ul>
<li>Stretch拉伸 沿整条线映射纹理一次</li>
<li>Tile 瓷砖平铺 不停的重复纹理</li>
<li>Distribute Per Segment 分配执行</li>
<li>Repeat Per Segment 重复显示</li>
</ul>
<p>Shadow Bias 阴影偏移</p>
<p>Generate Lighting Data 生成光源数据</p>
<p>Lighting 光照影响</p>
<ul>
<li>Cast Shadows是否开启阴影</li>
<li>Receive Shadows 接收阴影</li>
</ul>
<p>Probes光照探针</p>]]></description></item><item><title>预制体（Prefabs）</title><link>https://menma.top/posts/unity/2024/06/%E9%A2%84%E5%88%B6%E4%BD%93prefabs/</link><pubDate>Mon, 17 Jun 2024 11:45:00 +0800</pubDate><author>mona</author><guid>https://menma.top/posts/unity/2024/06/%E9%A2%84%E5%88%B6%E4%BD%93prefabs/</guid><description><![CDATA[<p>可以重复使用的对象，修改预制体可应用到所有的对象</p>
<p>如果只修改某一个预制体 可解除预制体（Unpack Prefab）后修改</p>
<p>删除预制体后 场景中存在的预制体会变成红色 也可以解除预制体（Unpack Prefab）</p>]]></description></item></channel></rss>