推荐阅读:
- 我的CSDN
- 我的博客园
- QQ群:704621321
- 我的个人博客
做某件事的开心之处大概就来源于成就感吧,能带来成就感的事大家是都愿意去做的
———来自小白的装B
好久没写文章了,不是代表我懒了,只是我一直都这么懒的。哈哈哈,开个玩笑,文章虽没有,但是知识还是学到了的。由于豆渣占满了脑子空间,每次知识只能拿小本本记录下来,等到知识积累到一定程度了,参透了其中的奥妙,就将它同大家分享出来。
1.能不使用尽量不用全局广播:Event.Brocast()
2.setdata()会调用脚本的start()和commite()方法
因此,使用了setdata()的地方无须再调用start()或commit()方法
3.分页标签点击事件:当点击的是当前页签直接返回
if pageIdx==clickIdx then
return
end
4.方法传入参数,能table的就table,不要单个变量传。
table方法:
args={sid=1001,num=10}
function(args)
单变量传入:
local sid=1001
local num=10
function(sid,num)
5.配置表数据使用多个字段,先把该数据取出再.字段名
不友好的写法:
local reward=config[idx].reward
local num=config[idx].num
优化后写法:
local info=config[idx]
local reward=info.reward
local num=info.num
6.pop弹窗:以下两种弹窗有遮罩的,不用加Image。
popupmanager.openinsubview(this.gameObject)
view.ispopup = true
7.pop弹窗不要动画打开关闭:
popupmanager.openinsubview(go, true, true, 0)
popupmanager.close(go, 0)
8.Rect Transform设置上下拉伸时,修改距离顶部,底部高度,长宽的方法:
local rect = this.gameObject:GetComponent("RectTransform")
rect.offsetMax = Vector2.New(0, 0);--顶部
rect.offsetMin = Vector2.New(0, 0);--底部
rect.sizeDelta = Vector2.New(720, 0);--宽高
含义如下:
rect.sizeDelta的x是width
rect.sizeDelta的y是height
rect.offsetMin 是vector2(left, bottom);
rect.offsetMax 是vector2(right, top);
其他属性修改方法:
rect.anchorMin = Vector2.New(0.5, 0.5)
rect.anchorMax = Vector2.New(0.5, 0.5)
rect.pivot = Vector2.New(0.5, 0.5)
rect.localScale = Vector3.New(0.8, 0.8)
9.滑动列表中使用了灰色材质球的,遮罩使用3Dmask
10.spine动画使用:Unity 使用 Spine 动画
11.粒子特效层级问题:修改层级时需要修改粒子特效里所有能修改的层级,比低一级的大一层级即可
12.粒子特效使用方法:
Util.DestroyAllChild(ui.upgradeEff)
local UI_jueseshengji = Util.Instance(utils.getuiseffect("UI_jueseshengji"))
Util.SetParent(UI_jueseshengji, ui.upgradeEff)
13.隐藏lable描边等
local outline = ui.uplvtxt.gameObject:GetComponent("Outline")
local shadow = ui.uplvtxt.gameObject:GetComponent("Shadow")
outline.effectColor = "#FFFFFF"
shadow.effectColor = "#FFFFFF"
14.滑动列表滑动到指定下标idx
ui.towerList.totalCount = towerTotal
ui.towerList:RefillCells(idx)
15.unity设置某物体的父物体
obj.transform:SetParent(go.transform)
16.引用技术:unity对象池之引用技术
17.启用/禁用某组件
local com= getcom
com.enabled = bol
18.遍历可能下标不连续表的所有内容
for i, v in pairs(this.myTime) do
end
19.移除表中某位置的元素(会改变下标)
table.remove(this.myBigPet,idx)
20.向表插入某元素(默认在最后插入)
table.insert(this.mySmallPet, resp.result)
21.子物体数量
gameObject.transform.childCount
22.动画效果:列表中的item一个一个显示:使用协程,每隔0.05秒后实例化一个item,具体实现方法
ui.coroutine = coroutine.start(function()
for i, v in ipairs(_data) do
--实例化操作TODO
coroutine.wait(0.05)
end
end)
注意:关掉该界面时,记得将协程停止并销毁
if ui.coroutine then
coroutine.stop(ui.coroutine)
ui.coroutine = nil
end
23.for循环刷新一些图片的时候,试图改变图片透明度,造成卡死现象。
for i = 1, 5 do
--刷新图片TODO
icon:GetComponent("Image").color = Color.New(255, 255, 255, 0)
end
解决过程:排除解决,就先试试单独调用,看调用的方法对不对,如果对,就试试分帧处理,看是不是渲染机制的问题
coroutine.start(function()
for i = 1, 5 do
--刷新图片TODO
icon:GetComponent("Image").color = Color.New(255, 255, 255, 0)
end
coroutine.wait(0.001)
end)
24.循环列表刷新但不滑动
ui.towerList:RefreshCells()