Unity学习[常识,基本Editor操作与常用API方法]

1. Alt+左键小箭头可以快捷收拢和拉开所有子级目录。

  1. Shift+F视角缩放到选中的物体。(复盘:单F也可以)

  1. 关于摄像机视图像素大小与游戏物体实际像素大小比例问题:{

  Unity中以格为单位,Camera Width = 分辨率比(30x20)也就是1.5乘上size乘2 = 15x2=30格,Camera Height同理。(仅限于scene视图, 实机画面需要代码获取width和height, UnityEngine.Screen.width)

 

  Sprite导入时,想要刚好1格:那么图片宽度为10,设置ppu为10(10像素占一格)。

  想要该Sprite与相机等长(也就是屏幕等长),那么sprite拉伸scale = 30。

}(复盘:2D相机不同分辨率下高度不变,宽度自适应。

延伸一下实例——某些roguelike类型游戏每个房间需要设置到摄像机同等大小以匹配,此时根据分辨率(1920x1080)与摄像机size(5)可得出比例1920/1080=?/5所以?=8.889, 此时地图宽高应为≈8.889/5)

4, 关于导入资源出错:Resources.Load<GameObject>(“white”)语句检查资源类型是否一致,资源路径是否一致,Resources文件夹是否打错。(复盘,资源类型很容易搞错,请确认是prefab或Texture2D或GameObject,etc..)

5, Unity按下按钮持续触发事件:自定义一个脚本并设置pointerDown事件在update处持续调用自定义的UnityEvent,需要调用的脚本获取该脚本UnityEvent并添加AddListener即可。

6, 关于canvas在不同分辨率下布局变形:

  1. 请注意Rect Transform几种布局的区别来应对{等比缩放,维持大小,对其等}。
  2. 设置CanvasScaler 为 ScaleWithScreenSize。

7,使用Unity自带Sprite素材的办法:点击小眼睛可展示本身素材。

  1. Input.GetTouch(int finger)的使用:只限于手指触摸;无触摸时报错,配合条件Input.TouchCount使用。

9, Input.GetMouseButtonDown(int type): 012分别是鼠标左右中键按下

10, 检测碰撞需要两者有碰撞范围Collider且任一方有刚体Rigibody。

11, Collision2D.contacts[0].normal的x,y可用于判定碰撞方向4个。

2022/2/16

12, Random.ColorRGB()随机颜色方法

13, 此界面摁住ALT键可快捷对齐

  

  1. SystemInfo类下的deviceType可用于判断玩家设备类型。

15, 代码移动物体碰撞时产生抖动的解决:{

直接将移动代码放到fixedUpdate,即可。

由于update每次将物体直接设置到移动坐标,而碰撞检测会将物体归位,所以产生抖动。

}

16, Cinemachine跟随相机的使用:{

添加一个Follow物体;

Extensions选择Confiner并添加一个Polygon多边形collider作为限制区域。

}

17, Physic2D.OverlapCircle(Vector3 point, float radius, LayerMask)函数:{

该函数作用于检测point周围半径radius有无碰撞返回bool值,layerMask限定图层检测。

Ps:例如检测是否在地面。

}

2022/2/17

18, Hierarchy右键无法添加UI的bug:plasticSCM的bug,删除即可。(尽量别用plasticSCM)

19, gameObject.layer更改物体LayerMask层

2022/2/18

20, MonoBehaviour生命周期简单了解:{

由上至下:

在Editor下每当添加一个Mono时调用其Reset,当Instantiate一个Mono时按顺序调用其Awake,OnEnable,Start;然后进入循环。

当设置this.enable = false时,立即进入OnDisable;

然后当Mono被销毁时(移除引用),调用OnDestroy

}

21, 设置游戏帧率:

1, 首先关闭垂直同步

2, 在开始时设置Application.targetFrameRate = 240, (实际值 一般pc为144,手机最高120。)

22, C#中的泛型方法定义与返回值:

定义为 T method<T>(){

T obj = default(T);

return obj;

}

重点就是default(T) 将obj赋值为该类型默认值,然后才可通过返回类型编译。

  1. 如何给Tilemap添加一个Tile:TIlemap.SetTile(Vector3Int vec, Tile tile), 另外,创建tile需要使用:ScriptableObject.CreateInstance<Tile>();

2022、3、4

  1. 获取目录下文件列表:new DirectoryInfo(assetsPath).GetFiles("*", SearchOption.AllDirectories);
  2. 获取目录下所有资源:AssetDatabase.LoadAllAssetsAtPath(assetsPath);
  3. 比较TAG用 compareTag(“TagName”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值