「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」。
作为一名优秀的开发者,对于技术的探求应该是永无止步的,如何让自己更进步,那就只有不停的学习,不停的充电.而这些都都是说起来容易做起来难,坚持才是难的地方 --蛙哈哈
最近一直在总结一些自己常用的代码逻辑,可以为大家提供一些参考,可以省去一些重复写某些固定代码的时间.
如何通过点击选中某个物体
1.给这个物体设置一个layer 2.通过射线去检查碰到的物体有没有这个layer
private LayerMask _layers;
private void On_TouchUp(Gesture gesture)
{
//从手指触摸的位置发出一条射线
//_layers表示你要去检测的层的集合
Ray ray = Camera.main.ScreenPointToRay(gesture.position);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 1000, _layers))
{
//碰到了layer == 10的物体
if (hit.collider.gameObject.layer == 10)
{
//todo something
}
}
}
计时器
计时器分为三种 1.Update deltaTime的方式
public float timer = 3;
void Update()
{
timer -= Time.deltaTime;
if(timer <= 0)
{
Debug.Log("Timer has finished!");
}
}
2.协程
IEnumerator CreateAllChip(){
for (int i = 0; i < prefab_chip.Length; i++) {
yield return new WaitForSeconds(2);
}
}
MSG1里的Timer对象就是基于第一种做法封装出来的接口,可以借鉴
时间戳转本地时间
方法1:先new一个1970年的本地时间对象,再加入时间戳的秒数,即可生成本地时区时间, 方法2:先new一个当前时间戳的时间对象,再转换为本地时区时间. 两个方法的差别在于 在实行夏令时的时区,方法2 可以准确的转换为使用夏令时的时间,而方法1只能获取非夏令时时间.
如何查看真机Log
手机连接电脑 运行Cmd adb logcat > log.txt 查看手机的log 并且重定向到文件 通过此log 就可以查找相关的问题
移除玩家名字输入中的空格
self.input.value = string.gsub(self.input.value, "\n", "")
EventDelegate.Add(InputData.onChange, OnGuildInputChange);
private void OnGuildInputChange()
{
InputData.value = InputData.value.Replace("\n", "");
}
如何检测emoji表情
local function isIncludeEmoji(text)
local lastIndex = 1
local len = utf8.len(text)--utf8解码长度
for i = 1, len do
local s1 = string.sub(text, lastIndex, utf8.offset(text, i + 1) -1)
local byteLen = string.len(s1)--编码占多少字节
if byteLen > 3 then--超过三个字节的必须是emoji字符
return true
end
lastIndex = lastIndex + byteLen
end
return false
End
vscode后辍名支持
"files.associations": {
"*.lua.txt": "lua",
}