输出结构体
构造函数a2v的命名
a: application 应用
2:to 到
v: vert 顶点着色器
构造函数v2f的命名
v: vert 顶点着色器
2:to 到
f:frag 片元着色器
本节概要
Shader中2个构造函数名字的含义。
2个构造函数中各个成员语义的意义。
顶点着色器返回值和写法讲解。
如何将区间(-1,1)转变为(0,1)。
输出结构体
构造函数a2v的命名
a: application 应用
2:to 到
v: vert 顶点着色器
构造函数v2f的命名
v: vert 顶点着色器
2:to 到
f:frag 片元着色器
本节概要
Shader中2个构造函数名字的含义。
2个构造函数中各个成员语义的意义。
顶点着色器返回值和写法讲解。
如何将区间(-1,1)转变为(0,1)。
Shader 输入结构体
:SV_TARGET(是渲染到RenderTarget中,RenderTarget是默认的缓存叫做帧缓存)
:POSITION(语义:输入的模型顶点信息)
:SV_POSOTION(语义:顶点输出之后的裁剪空间的顶点信息)
以上三种都是CG,HLSL中的语义,语义是告诉程序,我们输入的是什么。
例如:顶点着色器的参数(float4 v:POSITION)
float4告诉我们这是一个4维的变量。
:POSITION告诉我们这是输入的模型顶点信息。
理解a2v结构体,这个a2v名字可以随便命名,但是要确保和地下顶点着色器中的参数名字保持一直。
结构体中的每一个成员,都需要有一个语义去标注。
理解 vert( ) 方法 的结构:
1/返回值float4是被 :SV_POSITION语义标注的
代表裁剪空间顶线信息。
2/参数a2v 是一个结构体,考虑到可能要输入大量的模型空间的信息。例如,顶点信息,法线信息,uv信息等,固使用结构体来作为方法参数。
有新的发現麻?
Forward 拼错了
资源加载时,预先对其依赖的资源加载。
卸载时,对其依赖的资源卸载。
桥接模式的意图是:将抽象部分与实现部分分离,使得它们都可以独立的变化。
路由机制:路由就是URL到函数的映射。本框架中使用URL到资源对象地址的映射
Visual Studio 查看类图
啊,团子大家族,泪目了
逻辑很混乱啊
疑问
改变当前场景状态的方法和离开场景的方法感觉有点冲突。
js里用json更舒服
看一个方法的API,打逗号
ShootBall脚本IsCross方法问题:
因为本游戏是2D游戏,而Z坐标的位置会影响两个球的距离,所以应当使用Vector2.Distance方法判断,而非Vector3。
修改如下:
public bool IsCross(Vector3 targetPos, float dis)
{
return Vector2.Distance(transform.position, targetPos) <= dis;
}
TextAsset itemText = Resources.Load<TextAsset>("Items");
要把Items.json文件放在Resources目录下,不然会报空指针。
基类:Item(物品类)
派生类:Consumable(消耗品类),Equipment(装备类),Weapon(武器类),Material(材料类)
public class Item
{
//物品(公有的的属性)
}
public class Consumable:Item
{
//消耗品的属性
}
public class Equipment:Item
{
//武器的属性
}
public class Material:Item
{
//材料的属性
}
前面ObjectPool脚本的GetObject方法中,while循环中都掉了return,导致运行就卡死。
其中有一次运行的时候控制台提示内存溢出,就找了下脚本中有循环的部分,发现是GetObject函数写错了,漏写了return。
while (i-->0) {
T t = pool[i];
pool.RemoveAt(i);
//return t; //开始的时候这句漏写了
}
另外,正确的写法并没有循环,所以把while改成了if,至少写错的情况下也不会有死循环的情况。
这里的这个bug是由于ViewBase里Show已经调用UpdateFun方法,同时又在下面又调用了UpdateFun方法导致该操作卡死在对象池里,这边补上base.Show刚好能解决调用的时序问题可以解决,但是等于多调用了一次UpdateFun方法,不如将SwitchPlayer里的show方法删除,交给ViewBase来管理
ViewBase中在Show方法中调用UpdateFun后可以将SwitchPlayer中Show方法删除,这段代码多余
这里按着视频来的话应该会有一个栈内存溢出的bug,需要删除ViewBase里的InitUpdateObjects方法并将_viewUpdates像_viewInits一样的方式在InitSubView内初始化以及调用InitViewInterface方法。