<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[杂学记录]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sinat_34870723</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sinat_34870723]]></copyright><item><title><![CDATA[【UE】支持使用不同IDE打开不同源代码]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/137599110</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/137599110</guid><author>sinat_34870723</author><pubDate>Wed, 10 Apr 2024 15:36:42 +0800</pubDate><description><![CDATA[UE支持使用不同IDE打开不同源代码]]></description><category></category></item><item><title><![CDATA[【UE】阅读和理解距离剔除源码]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/135135826</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/135135826</guid><author>sinat_34870723</author><pubDate>Thu, 21 Dec 2023 17:16:20 +0800</pubDate><description><![CDATA[UE中的距离剔除是剔除中常见的策略之一，本文简要介绍距离剔除的原理]]></description><category></category></item><item><title><![CDATA[UE 反射获取实例的Array数据]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/128850755</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/128850755</guid><author>sinat_34870723</author><pubDate>Thu, 02 Feb 2023 15:10:53 +0800</pubDate><description><![CDATA[UE反射，FArrayProperty获取队列实例数据]]></description><category></category></item><item><title><![CDATA[【UE】Slate编辑器动态添加Button]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/125042868</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/125042868</guid><author>sinat_34870723</author><pubDate>Mon, 30 May 2022 11:01:22 +0800</pubDate><description><![CDATA[前言
实现编辑器动态添加界面元素，例如button之类的
效果

实现
.h文件添加定义

.cpp文件实现逻辑

界面排版

TSharedRef&lt;SDockTab&gt; FDynamicCreateToolModule::OnSpawnPluginTab(const FSpawnTabArgs&amp; SpawnTabArgs)
{
       TSharedRef&lt;SDockTab&gt; dockTabSharedRef =
              SNew(SDockTab)]]></description><category></category></item><item><title><![CDATA[【UE】初识Slate编辑器-理解一个最基础的编辑器界面]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/125005682</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/125005682</guid><author>sinat_34870723</author><pubDate>Fri, 27 May 2022 16:12:56 +0800</pubDate><description><![CDATA[UE的Slate快速入门
]]></description><category></category></item><item><title><![CDATA[【编辑器】将Unity的log全部生成到本地]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/120229157</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/120229157</guid><author>sinat_34870723</author><pubDate>Fri, 10 Sep 2021 20:21:01 +0800</pubDate><description><![CDATA[前言
用Unity的Log窗口看日志比较麻烦，要不只能查关键词，要不只能看上下文。所以将log都生成到本地，然后自己搜索就最好了。
效果

实现
#if UNITY_EDITOR
using System;
using System.IO;
using System.Reflection;
using System.Text;
using UnityEditor;
using UnityEngine;
public class UnityOutputLogHelper
{
    private class]]></description><category></category></item><item><title><![CDATA[Unity渲染矩阵变换编辑器]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/113926155</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/113926155</guid><author>sinat_34870723</author><pubDate>Mon, 22 Feb 2021 00:10:23 +0800</pubDate><description><![CDATA[前言
编辑器可以快速得到每个环节计算出的数据，方便我们学习矩阵变换。
具体的渲染管线矩阵变换流程可以看这篇：矩阵变换计算流程参考文章
效果
实现
有一个主摄像机，有一个正方体即可。然后将脚本随便挂到一个对象上，赋值正方体。

输出
运行时，会有Log输出整个流程的矩阵的数值。


脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PointMartixTest : M]]></description><category></category></item><item><title><![CDATA[unity渲染的矩阵变换全流程]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/113925012</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/113925012</guid><author>sinat_34870723</author><pubDate>Sun, 21 Feb 2021 23:25:48 +0800</pubDate><description><![CDATA[前言
了解渲染管线中，坐标从模型位置转变成屏幕位置的运算过程。
整体过程

模拟演算
以橙色标记点为计算点。
模型空间
空间：建模软件
维度：3维

示例演算：

世界空间
空间：引擎 unity的transform位置
维度：3维

示例演算
公式

思路
M model 是根据cube的transform位置进行变换。
从上图可以得到数据，cube向（-1,-1,-1）进行位移，y轴旋转30°，整体缩小0.5百分比。
计算
sin(30) = 0.5
cos(30) = 0.866

观察空间
空间：摄]]></description><category></category></item><item><title><![CDATA[【算法】插入排序]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/105728883</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/105728883</guid><author>sinat_34870723</author><pubDate>Fri, 24 Apr 2020 13:22:41 +0800</pubDate><description><![CDATA[介绍
思路：从头遍历，从当前位置向前寻找小于当前指向元素的数据。若有就将当前元素交换。遍历直到尾部结束。
成本：数据的起始顺序。
特点：取决于数据的顺序。要是顺序的就没有需要改变的数据。要是完全逆序就要全部重新排序。
适用：部分有序的数据。
思考
快速记忆：从少到多达到有序
代码

代码源于书籍《算法》

//插入排序
       void sort(int* a, int length)
  ...]]></description><category></category></item><item><title><![CDATA[【算法】选择排序]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/105705794</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/105705794</guid><author>sinat_34870723</author><pubDate>Thu, 23 Apr 2020 13:39:07 +0800</pubDate><description><![CDATA[介绍
思路：找到数组中最小的元素，然后与头指针指向的元素进行交换。头指针顺序从第一个开始向后移动。
成本：比较次数
特点：运行时间只和数量相关。数据移动次数最少。
适用：希望少交换的数据
心得
快速记忆：排序时，当前指向的前面全部数据都是有序的。
代码
// 选择排序
		void sort(int* a, int length)
       {
              for (int i...]]></description><category></category></item><item><title><![CDATA[【算法】归并排序]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/105695557</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/105695557</guid><author>sinat_34870723</author><pubDate>Wed, 22 Apr 2020 23:25:24 +0800</pubDate><description><![CDATA[介绍
思路：将两个有序的数组归并到一个更大的有序数组中。
原理：按照一定规则，将数组不断分割到最小单位进行排序，然后将结果归并。直到合并回原本数组长度。
特性：需要使用额外的空间。
思想：分治思想（分割大问题为一个个小问题，通过解决所有的小问题从而解决大问题）
实现：自顶向下，自底向上
环境：适用数据量较大的数据
建议
接下来的算法会涉及递归，建议一边看示意图一边自己实现下流程，对照着学习会记忆更...]]></description><category></category></item><item><title><![CDATA[【编辑器】Unity读取git信息]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/104919683</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/104919683</guid><author>sinat_34870723</author><pubDate>Tue, 17 Mar 2020 13:12:36 +0800</pubDate><description><![CDATA[前言
最近有需求要读取git的提交信息，躺了坑记录一下。
该工具支持输入任何git的语句，效果和使用gitcmd是一样的。
效果
读取指定文件夹的log

实现
1.配置git
需要装git到本地，如果使用sourcetree的自带是不行的，需要全局的。
地址： https://git-scm.com/
要是上不了，可用这个：Git-2.25.0-64-bit
2.代码
核心是RunCMD，其余是...]]></description><category></category></item><item><title><![CDATA[【游戏框架】Unity资源管理和打包AssetBundle工具]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/104610135</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/104610135</guid><author>sinat_34870723</author><pubDate>Mon, 02 Mar 2020 13:43:51 +0800</pubDate><description><![CDATA[前言
如果想要了解AssetBundle相关，资源管理器实现的逻辑的话，可以先看一下这篇：【AssetBundle】Unity AssetBundle打包和资源加载解析。
项目
Demo.unitypackage
效果：运行时加载资源

使用说明


Entrance脚本是入口，大家可以根据自己需要改变。只需要那几个生命周期函数都照常执行即可。


资源加载有两种办法，勾上就是使用bundle。
...]]></description><category></category></item><item><title><![CDATA[【AssetBundle】Unity AssetBundle打包和资源加载解析]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/104610084</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/104610084</guid><author>sinat_34870723</author><pubDate>Mon, 02 Mar 2020 13:35:47 +0800</pubDate><description><![CDATA[前言
AssetBundle是Unity加载的资源格式。游戏不管使用什么平台打包，AssetBundle都是必不可少的。
为何选择AssetBundle
资源加载常用有几种模式：
1.直接使用IO进行加载，适合文本资源。
2.Resources类。将资源放置到名为Resources的文件夹下，就可以使用同名类进行加载。
3.AssetDatabase类。编辑器模式下，可以用原资源格式进行加载。
4...]]></description><category></category></item><item><title><![CDATA[【网络通讯】Unity使用protobuf建立简单的双端通讯模型]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/103303266</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/103303266</guid><author>sinat_34870723</author><pubDate>Fri, 29 Nov 2019 00:02:37 +0800</pubDate><description><![CDATA[前言
在使用到服务器通讯的时候，常规是使用Google的Protobuf协议格式进行序列化数据。
网上Unity简单的双端交互比较少涉及到protobuf，这里给出一个包括了Protobuf使用的简单demo。
这个模型重点在于讲解如何使用protobuf，所以网络相关的只是实现了功能，有需要的可以自己了解下相关细节进行重写。
效果

Protobuf使用

定义协议，然后使用protoc工具生成...]]></description><category></category></item><item><title><![CDATA[【经验总结】如何快速上手新框架]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/98796134</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/98796134</guid><author>sinat_34870723</author><pubDate>Wed, 07 Aug 2019 23:21:49 +0800</pubDate><description><![CDATA[前言
游戏框架是支撑具体游戏逻辑的底层建筑，需要提供游戏工程大部分的基础需求的支持。
无论框架是小至只有一两个类模块，还是大至十几个模块，只要是为通用功能而起作用的都能成为项目的框架。
框架不是从开始指定了就不变动的，而是随着项目的发展而有所改变。但是并不意味着它是一个可以随便改动的地方。
当框架已经满足了功能，除非是功能有大改，具体的问题，详细的优化等情况，通常就是趋向于稳定。
框架稳定后，更多...]]></description><category></category></item><item><title><![CDATA[【编辑器】脚本实现OpenPrefab界面]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/92832399</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/92832399</guid><author>sinat_34870723</author><pubDate>Wed, 19 Jun 2019 15:19:26 +0800</pubDate><description><![CDATA[前言
2018的Unity中Prefab的显示会跳到另外的一个界面，在prefab的面板上有“Open Prefab”的按钮。这里用脚本实现这个按钮的功能。
效果

环境

脚本
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;

p...]]></description><category></category></item><item><title><![CDATA[Unity编译回调和加锁解锁]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/92828069</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/92828069</guid><author>sinat_34870723</author><pubDate>Wed, 19 Jun 2019 13:19:17 +0800</pubDate><description><![CDATA[前言
有时候当重新编译的时候会导致出现一些新的问题，这时候就需要手动控制编译的时机。
功能

编译前后的回调
编译加锁和解锁

效果

实现
环境
Test是个空类

脚本
using UnityEditor;
using UnityEditor.Compilation;
using UnityEngine;

public class AssemblyTest : EditorWindow
{
...]]></description><category></category></item><item><title><![CDATA[【UGUI】3D世界坐标转2DUI坐标并自适应的做法（血条，气泡）]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/89682782</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/89682782</guid><author>sinat_34870723</author><pubDate>Mon, 29 Apr 2019 20:57:23 +0800</pubDate><description><![CDATA[前言
有一些功能是需要用2D的形式跟随3D的模型进行显示的。例如模型的讲话气泡，血条等。
功能

实现
1. UI的锚点设置，UI的根节点的大小设置
2. 脚本实现

UI
屏幕坐标系是从左下角为原点，Y轴向右为正，X轴向上为正。所有相关的UI的锚点都需要是设置成左下为锚点。其次，UI挂载的根节点需要做屏幕的自适应，保证和屏幕一样大。

1.如果是直接挂载到Canvas，直接按上图调整锚点即可

...]]></description><category></category></item><item><title><![CDATA[【游戏音效】Unity集成Wwise并进行开发的全流程教程（三）脚本接入Unity]]></title><link>https://blog.youkuaiyun.com/sinat_34870723/article/details/89506079</link><guid>https://blog.youkuaiyun.com/sinat_34870723/article/details/89506079</guid><author>sinat_34870723</author><pubDate>Thu, 25 Apr 2019 00:16:51 +0800</pubDate><description><![CDATA[集成教程：
【游戏音效】Unity集成Wwise并进行开发的全流程教程（一）准备工作
【游戏音效】Unity集成Wwise并进行开发的全流程教程（二）Wwise项目
前言
这一篇章是Unity接入Wwise的代码。如果看了前面两章的介绍，那么就会比较清晰地明白脚本为什么要这么写。
提要
1.绑定Wwsie项目并配置对应的项目设置
2.脚本交互：初始化，播放，音量，停止，开关，清理
3.热更资源配置...]]></description><category></category></item></channel></rss>