另一种解决方案:设置队友预设,把一些不用的脚本取消
另一种解决方案:设置队友预设,把一些不用的脚本取消
向任意向量投影的投影矩阵
1-Nx*Nx -Ny*Nx
-Nx*Ny 1-Ny*Ny
向任意平面投影的3D投影矩阵
1-Nx*Nx -Ny*Nx -Nz*Nx
-Nx*Ny 1-Ny*Ny -Nz*Ny
-Nx*Nz -Ny*Nz 1-Nz*Nz
三维任意轴N缩放K的缩放矩阵:
(K-1)*Nx*Nx+1 (k-1)*Ny*Nx (K-1)*Nz*Nx
(K-1)*Nx*Ny (K-1)*Ny*Ny+1 (K-1)*Nz*Ny
(K-1)*Nx*Nz (K-1)*Ny*NZ (K-1)*Nz*Nz+1
矩阵相乘条件:r-n * n-p = r-p
坐标系平移(a,b)
x1 = x+a
y1 = y+b
Pass 通道
Name = “Pass通道名称”
Unity Pass 中的Tags特有设置:
"LightMode” = "ForwardBase"//定义该Pass通道在Unity渲染流水的角色
“RequireOptions”="SoftVegetation"//满足某些条件时才进行渲染
Fallback 定义在SubShader只外
Fallback “路径”/ Off
Render设置
Cull off/back/front //选择渲染面
ZTest Always/Less/Grater/LEqual/GEqual/Equal/NotEqual //深度测试
Zwrite off/on //深度写入
Blend SrcFactor DstFactor //混合
LOD 100
“Queue”="Transparent" //渲染顺序
“RenderType”="Opaque"//着色器替换
“DisableBatching” = "True" //是否进行合批
“ForceNoShadowCasting”="True" //是否投射阴影
“IgnoreProjector”= "True” //是否受Projector影响,通常用于透明物体
“CanUseSpriteAltas”=“False"//是否用于图片的shader,通常用于UI
"PreviewType" = "Plane" //Shader 面板预览类型
fsad
流量是要花钱的,只传必要数据。
端正心态不扯裆。
Score
阴影效果是因为打开了两个StratPanel
将Common类库的目标框架修改为1.0,重新生成后在引用。这样才解决了引用问题
几百个数据的时候这样的话会不会导致,要添加新的保存数据是会出现耦合 应该不会
一般保存的数据:
角色的扩展属性
基本数值
经验
物品等
那么保存的时候怎么保存呢?
点击保存:
在每个数据系统下:
写一个保存实例数据的方法:
还有一种可能是把阴影距离改成了0,也没有
如果直接销毁,会导致敌人列表出现空指针,还会导致重新再用的时候会消耗性能
死亡后不需要 导航,不需要动画,不需要AI
1、通过Resources加载
GameObject obj = GameObject.Instantiate(Resources.Load("myPrefab") as GameObject);
2、在菜单栏添加菜单,程序集打包
using UnityEditor;
[MenuItem("Tools/打包")]
public static void Build()
{
BuildPipeline.BuildAssetBundles(Application.streamingAssetsPath, BuildAssetBundleOptions.ChunkBasedCompression, EditorUserBuildSettings.activeBuildTarget);
AssetDatabase.Refresh(); /*编辑器刷新*/
}
3、通过AssetBundle加载
AssetBundle assetBundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/myPreFabs");
GameObject gameObject = GameObject.Instantiate(assetBundle.LoadAsset<GameObject>("myPreFab1"));
4、AssetDatabase.LoadAssetAtPath方式加载
GameObject gameObject = GameObject.Instantiate(UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>("Assets/GameData/Prefabs/myPreFab1.prefab"));
如果采用寻找相同类型来存储可堆叠物品,而不是采用ID,那么会导致获取得HP时却增加了MP存量而不是获取HP。
同时如果采用StoreItem方法来直接存储可堆叠物品会导致一个对象拥有多个子对象,一个格子对象可能带着四五个子对象,而且这个现象是无穷叠加,捡到多少次消耗品,就会给那个格子添加多少个子对象。
利用类型来储存消耗品是不合适的,应该采用根据ID来寻找,这样精确的储存可以确保玩家获取到的不同的消耗品都可以正确的进入背包。
首先更改findtype方法为findId。
public SlotUI FindSameIdSlot(Item item)
{
int id = item.ID;
foreach(SlotUI slot in slotlist)
{
if(slot.transform.childCount != 0)
{
if(slot.GetItemId() == id)
{
if(slot.IsFull() != true)
{
return slot;
}
}
}
}
return null;
}
其次更改Slot内的方法。
public int GetItemId()
{
return transform.GetChild(0).GetComponent<ItemUI>().item.ID;
}
以及添加一个新的方法,来给获取得的相同消耗品增加存储量,而不是再次给储物槽提供一个新的子对象。
public void StockMore()
{
transform.GetChild(0).GetComponent<ItemUI>().number++;
}
最终玩家取得到的不同消耗品,会正确的堆叠。
SlotUI slot = FindSameIdSlot(item);
if(slot != null)
{
slot.StockMore();
return true;
}
else
{
slot = FindEmptySlot();
if(slot == null)
{
return false;
}
slot.StoreItem(item);
return true;
}
foreach (var key in tab.GetKeys()) {
print("key:"+key+"---keyType:"+key.GetType()+"---value:"+tab[key]);
}
table中本没有键的那些值,转换成LuaTable后,会自动添加一个int64类型的键,下标从1开始。