这里不需要写代码动态控制高度,直接挂一个Content Size Fitter组件就行。
这里不需要写代码动态控制高度,直接挂一个Content Size Fitter组件就行。
堆排序思路(使用大顶堆)
1.把全部的子树变成大顶堆,完成后最大的数就被换到了根部。
2.把最大的数换到堆的末尾
3.重新上面两个步骤,但每次换到末尾的结点不参与新的堆排序。
4.最终,得到一个有序的数列。根部最小
191——unityWebRequest 安卓端读取jsonwen'j
Tile Palette :不点击 Edit 去编辑Palette 。当保存时Palette会复原。
transformDirection();
局部坐标换算成空间zuo'b
刚体会休眠、把rigd放在移动的物体上
//1.明确存储地址
//2.代码转换成Json文本
string filePath =
Application.streamingAssetsPath + "/WeaponProperties.json";
string saveJsonStr = JsonMapper.ToJson(weaponPropertiesList);
//3.接上"水管"(流)到地址
//4."喷水"到地址(写入Json文件)
StreamWriter sw = new StreamWriter(filePath);
sw.Write(saveJsonStr);
//5.把水管收起来(释放)
sw.Close();
子类可以放在父类的列表中
享元模式:共有的对象可以被多个对象使用;
对象池:一个对象只供一个对象使用
对象池是享元模式的一种
void HideBlade()
{
bladeBody.SetActive(!isEquip);
bladeHand.SetActive(isEquip);
}
直接用一个搞定
在GetKeyDown里面修改是否装备状态isEquip=!isEquip
然后用装备状态来控制手部和背部武器的显示状态
4:04 卡哇伊内
pos坐标的转换将以世界坐标系和黑色方块的物体坐标系为基础进行转换,所以第一次转换的结果是相等的
用反射代替switch语句,解决需求变更问题
Type t = receiver.GetType();
//反射
MethodInfo methodInfo = t.GetMethod("CreateCharacter");
//将特定类型分配给泛型方法定义的类型参数
methodInfo = methodInfo.MakeGenericMethod(soldierType);
//参数数组
object[] parameters = new object[] { weaponType, pos, lv };
methodInfo.Invoke(receiver, parameters);
如果遇到Enable在Awake前面,可以进入script execution order 更改script执行顺序
Layout使用tall布局
切割的方法:
TextType选择Sprite(2D and UI
Sprite选择Multiple
选择 Open Sprite Editor
然后点击yes 选择 slice 的automatic
自动进行切割
做游戏可以不使用框架?可以
弊端:
1.不方便协同开发
2.不方便维护
打包出错:
Assets\XLua\Gen\UnityEngine_LightWrap.cs(191,39): error CS1061: 'Light' does not contain a definition for 'SetLightDirty'
解决办法:
https://blog.csdn.net/xiaochenXIHUA/article/details/96910189
CMake报错解决:
Visual Studio Installer--修改:
1、单个组件--2个包含CMake的组件;
2、单个组件--window10 SDK
3、工作负荷--Visual Studio 扩展开发;
然后 CMake--File--Delete Cache ,重新Configure
1.动静分离
2.合理划分UI层级
3.尽量减少mask使用
4.尽量减少图文交叉
5.尽量少使用Raycast Target属性
6.图片可以打包成图集,九宫格
7.图片压缩