<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LuLou_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LuLou_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LuLou_]]></copyright><item><title><![CDATA[R语言 解决Error in install.packages : package ‘RGtk2’ not installed because it is not built for UCRT]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/125008825</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/125008825</guid><author>LuLou_</author><pubDate>Fri, 27 May 2022 18:11:31 +0800</pubDate><description><![CDATA[安装rattle包时需要装RGtk2包，有可能报错：
package ‘RGtk2’ successfully unpacked and MD5 sums checked
Error in install.packages : package ‘RGtk2’ not installed because it is not built for UCRT]]></description><category></category></item><item><title><![CDATA[Unity动画：两种方法实现无间断从头重复播放动画]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/124480161</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/124480161</guid><author>LuLou_</author><pubDate>Thu, 28 Apr 2022 18:09:11 +0800</pubDate><description><![CDATA[Unity播放动画小技巧]]></description><category></category></item><item><title><![CDATA[Unity下落式音游实现——(6)串口编程与UI]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/123805740</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/123805740</guid><author>LuLou_</author><pubDate>Mon, 28 Mar 2022 20:53:18 +0800</pubDate><description><![CDATA[Unity下落式音游实现——(6)串口编程与UI
前期准备
还差输入处理（串口编程）和杂七杂八的UI就完成了
思路
串口编程比想象中简单，需要用到System.IO.Ports库，其实只要提前和硬件那边商量好，记录几个关键参数（baudRate、dataBits、端口号）就行。其中端口号就是插哪个USB口
UI大部分都很简单，无非就是用我们之前写好的观察者模式（或者用自带的SendMessage也行），主动地读取数据，或者被动地在某些功能函数中接受通知来更改信息。
另外，假设你和我有一样的需求：在正式游戏之]]></description><category></category></item><item><title><![CDATA[Unity下落式音游实现——(5)根据音乐生成滑块]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/123805475</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/123805475</guid><author>LuLou_</author><pubDate>Mon, 28 Mar 2022 20:45:34 +0800</pubDate><description><![CDATA[Unity下落式音游实现——(5)根据音乐生成滑块
前期准备
终于到了最激动人心的时刻！仔细回忆需求，“需要在对应节奏处生成滑块”，其实就是在固定的时间点生成滑块。可以用一个dictionary存储对应时间点和生成的滑块类型，然后在update中每帧记录运行时间，到点了就生成对应的滑块。easy！right？
但这样似乎不能很好地满足某些需求，比如根据难度不同音乐播放速度会变化、音乐并不是连续播放，音乐与音乐会有停顿，同时得实现回放功能。对上述问题，好像不难想到对应解决办法：在每帧记录运行时间时乘上一个表示]]></description><category></category></item><item><title><![CDATA[Unity下落式音游实现——(4)鼓盘动画及敲击判定]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/123805428</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/123805428</guid><author>LuLou_</author><pubDate>Mon, 28 Mar 2022 20:44:21 +0800</pubDate><description><![CDATA[Unity下落式音游实现——(4)鼓盘动画及敲击判定
前期准备
导入资源及布置UI，创建脚本DrumController.cs
思路
由于有多个鼓盘，需要为每个鼓盘创建一个Animator，每个鼓盘有错误敲击和正确敲击两个Animation。另外正确敲击时在鼓盘的上方会有额外的动画，由于美术那边将额外动画和正确敲击的鼓盘分开给我，而且出于复用性考虑，我将额外动画配置鼓盘动画保存为一个prefab，在显示正确动画的同时在对应位置创建（事实证明这是个错误…）。配置动画难度不高，但会有很多很烦人的坑
正常的音游判]]></description><category></category></item><item><title><![CDATA[Unity下落式音游实现——(3)实现观察者模式]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/123805161</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/123805161</guid><author>LuLou_</author><pubDate>Mon, 28 Mar 2022 20:42:44 +0800</pubDate><description><![CDATA[Unity下落式音游实现——(3)实现观察者模式
前言
本来这一部分是计划放在后面的，但在整理鼓盘敲击判定时优化了原来的部分代码（删掉了一个不必要地函数），顺理成章地出了bug。最后发现是这个函数原会在另一个脚本中用unity自带地消息系统传递（SendMessage），麻烦在于SendMessage传递函数名参数用的是字符串，所以当我回滚代码，查找那个函数的引用时什么也没找到，很麻烦。于是就先将观察者模式提前…
前期准备
观察者模式
有监听者和被监听者两类对象，当某事件出现时，被监听者会对所有监听者进行广]]></description><category></category></item><item><title><![CDATA[Unity下落式音游实现——(2)滑块移动及生成]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/123805052</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/123805052</guid><author>LuLou_</author><pubDate>Mon, 28 Mar 2022 20:34:10 +0800</pubDate><description><![CDATA[Unity下落式音游实现——(2)滑块移动及生成
前期准备
导入资源及布置UI，创建脚本SliderController.cs、SceneController.cs、GameInformation.cs
鼓盘属于UI还是游戏对象？
毫无疑问，分数条、进度条等属于UI（给玩家展示信息）；滑块属于游戏对象（频繁生成和销毁）问题就在于鼓盘，从游戏逻辑的角度，滑块需要在鼓盘附近作位置判断（hit or miss），当成游戏对象处理更方便；从功能看，鼓盘需要频繁播放动画。最后还是决定将鼓盘放在UI层，用SceneCo]]></description><category></category></item><item><title><![CDATA[Games101作业3:重心插值、着色模型]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/123087228</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/123087228</guid><author>LuLou_</author><pubDate>Wed, 23 Feb 2022 12:25:50 +0800</pubDate><description><![CDATA[Assignment3
前置知识
Blinn-Phong
一种局部着色模型（不会生成阴影，因为不涉及多物体）
光源方向I和视角方向v均是从片元出发（指向光源或摄像机）
diffuse（漫反射）：与视角无关，只与接受到的光的总量有关
Ld=kd(I/r2)max(0,n∗I)
L_d=k_d(I/r^2)max(0,n*I)
Ld​=kd​(I/r2)max(0,n∗I)
specular（高光）：与视角有关，用光源和视角的半角和法向量作比较
Ls=ks(I/r2)max(0,n∗h)p
L_s=k_s(I/]]></description><category></category></item><item><title><![CDATA[Games101作业2:光栅化]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/123058197</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/123058197</guid><author>LuLou_</author><pubDate>Mon, 21 Feb 2022 23:01:23 +0800</pubDate><description><![CDATA[Assignment2
前置知识
光栅化
将数据绘制成图像（呈现到屏幕上）
采样：用某种方法（函数）对某个点给出确定的值
光栅化采样的任务：屏幕上的像素是离散的，要判断该像素是否需要绘制（该点是否在绘制的三角形中）
包围盒（Bounding Box）：减少需要扫描的范围，取三角形三个点XY的最大和最小值，构建一个正方形的包围盒
走样
走样本质：采样的频率低于信号频率，使信号与信号之间发生重叠
反走样（antialiasing）：先模糊，再采样；本质是滤波使信号“变窄了”，截去了重叠的部分
MSAA（Supe]]></description><category></category></item><item><title><![CDATA[Games101作业1：旋转矩阵及投影变换]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/122772742</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/122772742</guid><author>LuLou_</author><pubDate>Wed, 02 Feb 2022 22:29:56 +0800</pubDate><description><![CDATA[Assignment1
前置知识
旋转矩阵（二维）
(cosα−sinαsinαcosα)
\begin{pmatrix} cos\alpha&amp;-sin\alpha \\ sin\alpha&amp;cos\alpha \end{pmatrix}
(cosαsinα​−sinαcosα​)
三维的旋转矩阵，保持这四个系数的值和相对位置不变，绕哪个轴转，就将对应列设成1，四个系数补到对应位置上。唯一例外是绕y轴旋转，右上角的符号要移到左下角（相对其他两矩阵转置），因为绕y转时叉积方向和另外两条轴相反（]]></description><category></category></item><item><title><![CDATA[C++学习笔记]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/122397549</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/122397549</guid><author>LuLou_</author><pubDate>Sun, 09 Jan 2022 19:16:53 +0800</pubDate><description><![CDATA[C++学习笔记
（前言：看侯捷视频做的一些笔记。主要分两部分，第一部分为C++ STL相关知识；第二部分为内存管理）
STL
OOP vs GP
OOP（Object-Oriented programming）将数据和方法结合（封装成类）
GP（Generic Progarmming）将数据和方法分离
STL用GP的思想实现，将数据和方法分开分别在容器头文件（vector、list等）和algorithm中实现；容器和算法之间用迭代器沟通
某些容器不支持某些特定的算法，比如list不能用algorithm里]]></description><category></category></item><item><title><![CDATA[Unity下落式音游实现——(1)需求分析]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/121090165</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/121090165</guid><author>LuLou_</author><pubDate>Mon, 01 Nov 2021 22:26:58 +0800</pubDate><description><![CDATA[Unity下落式音游实现——(1)需求分析
前言
由于项目比较繁杂，因此根据基本模块会分为数篇博客，记录了主要流程和某些具体的技术难点，以此作一个技术总结
效果预览图

GamePlay
1、记忆部分。播放音乐，在某一时间滑块从轨道滑下，**经过一段时间后（SlideTime）**滑到判定区，此时对应鼓面播放动画以提示玩家正确的音乐节奏
2、操作部分。此时回放上一部分的音乐片段，玩家根据记忆和听觉反馈（音乐节奏鼓点）在正确的时间内做出击打看不见的滑块
模块划分

其他功能
难度控制
有三种难度（简单、中等、]]></description><category></category></item><item><title><![CDATA[《Unity Shader入门精要》学习笔记]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/119079519</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/119079519</guid><author>LuLou_</author><pubDate>Sun, 25 Jul 2021 11:34:06 +0800</pubDate><description><![CDATA[《Unity Shader入门精要》学习笔记
简单说明
为控制渲染过程提供一层抽象，避免许多繁琐配置；用ShaderLab编写，使用一些嵌套在{}的语义；
定义了要显示材质所需的全部，不仅仅是着色器代码
Unity Shader != Shader(在同一个Unity Shader中定义顶点和片元着色器代码)
整体结构
//	指定该shader名字
Shader "Unlit/Shader"
{
    //	声明属性，方便以后调用
    Properties
    {
    //	Name：通常由下]]></description><category></category></item><item><title><![CDATA[Unity实现简单卡牌游戏框架]]></title><link>https://blog.youkuaiyun.com/LuLou_/article/details/115191300</link><guid>https://blog.youkuaiyun.com/LuLou_/article/details/115191300</guid><author>LuLou_</author><pubDate>Thu, 25 Mar 2021 09:09:21 +0800</pubDate><description><![CDATA[Unity卡牌游戏教程（一）简单框架
前言
项目的初衷是以项目形式串起unity各种零散知识，语言风格较（详细）啰嗦
需求
先来看需要实现什么东西
构建卡牌对象
简单的UI系统
UI和场景的简单交互
前期准备
打开unity，新建2D项目
左键点击Main Camera，在Inspector面板中点击Background修改背景颜色，同时将size修改为**屏幕像素高度/100f/2），比如你的屏幕像素是1920x1080，那么size就应该设置为5.4，这样屏幕上一个像素对应图像中一个像素（所谓Pixel]]></description><category></category></item></channel></rss>