我的Unity API

本文档记录自己用到的觉得比较适用的API

  • 摄像机

    • Renderer.isVisible 当前对象是否处于任意摄像机内.
    • 屏幕尺寸 float ratio = Screen.width / Screen.height; 可直接获取屏幕的宽高
      *摄像机视野及显示尺寸 this.GetComponent<Camera>().rect = new Rect((1 - 0.2f), (1 - 0.2f * ratio), 0.2f, (1 - 0.2f * ratio)); 前两个参数表示 摄像机画面处在屏幕的位置,后两个参数表示画面显示的尺寸
  • 生命周期函数

    • OnBecameVisible() 开始时如果对象在摄像机的视野内则执行一次.
  • 编辑器函数

    • void OnDrawGizmos() { Gizmos.DrawIcon(transform.position, "item.png", true); }
      用途:当我们想要在scene中看见一个对象,但又在游戏中不想看见时,可使用此方法.
      用法:在Assects根目录下创建文件夹 名称为 Gizmos , 将资源(图片)导入该文件夹, 在想要被看见的对象脚本中 编写函数 void OnDrawGizmos() { Gizmos.DrawIcon(transform.position, “item.png”, true); },该函数即便没运行也能执行, 三个参数为, 显示的位置,显示的图片名称,是否可见.
  • 小贴士

    • 垃圾回收if (Time.frameCount % 30 == 0) { System.GC.Collect(); }
      创建实例,销毁对象都会产生内存垃圾, 分配内存时手动的,但清除内存是自动的, 系统会根据内置算法自动调用回收垃圾方法,这样会可能掉帧. 可采用的方式 每间隔30帧手动回收,如上述方法, 也可以将手动GC 放在 场景切换时进行.
  • UI

    • EventTrigger 可做按/压判断
      EventTrigger trigger = button.GetComponent<EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerDown; entry.callback = new EventTrigger.TriggerEvent(); entry.callback.AddListener(delegate (BaseEventData eventData) { Debug.Log("ON Press"); }); trigger.triggers.Add(entry);

    • ScrollView
      scrollrect.verticalNormalizedPosition = 0.5f; // 手工移动列表,0.5f表示移到中间

    • 判断是否单击了UI
      if (EventSystem.current.IsPointerOverGameObject() || GUIUtility.hotControl != 0){}

    • 屏幕坐标转UI本地坐标
      bool isRect = RectTransformUtility.ScreenPointToLocalPointInRectangle( dragArea, touchpos, ((PointerEventData)eventData).enterEventCamera, out uguiPos);//将屏幕坐标转换为ugui本地坐标

  • DOTween

    • 自带状态函数
      void OnAnimationFinish() { Debug.Log("动画播放结束") ; }
      void OnParamUpdate( float f ) { Debug.Log(f); }
  • 物理引擎

    • 射线检测
      bool hit = Physics.Raycast(gunpos.position, cameraTransf.TransformDirection(Vector3.forward), out raycast, 100, layerMask); 第一个参数是射线发出的起点,第二个参数是射线方向的指向点,第三个参数是 射线检测到的信息,第四个参数是射线可检测的范围距离,第五个参数是 射线可检测的裁剪层.
  • transform

    • 坐标变换 characterCrl.Move(transform.TransformDirection(motion));//本地坐标转换成世界坐标 characterCrl.Move( ) 是以世界坐标为参数的,但我们只能得到本地坐标的参数, 这时transform.TransformDirection(motion)就可以把,以自身为参考的本地坐标移动后的结果,转换成世界坐标.
    • 坐标累加 cameraTransf.position = transform.TransformPoint(0, rolehight, 0); 表示在transform的坐标基础上,加上(0, rolehight, 0)后得到的坐标.
    • 向量变换 Vector3 dirward = Vector3.RotateTowards(transform.forward, dir, Time.deltaTime * rot, 0); 当前物体前方的向量将要转向dir方向的向量,过渡期间的向量值
  • Animator

    • 状态 AnimatorStateInfo stateInfo = anim.GetCurrentAnimatorStateInfo(0); 可获取当前动画机的状态 stateInfo.fullPathHash == Animator.StringToHash("Base Layer.idle") && !anim.IsInTransition(0) 动画机处于idle状态,且不处于过渡状态
  • NavAgent

    • 设置目标点 nav.SetDestination(target.position);
    • 停止寻路 nav.ResetPath();
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值