常用API

1、Time时间类函数:

  1. Time.time
  2. Time.timeSinceLevelLoad
  3. Time.deltaTime
  4. Time.fixedTime
  5. Time.fixedDeltaTime 在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。
  6. Time.SmoothDeltaTime 表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。
  7. Time.timeScale 时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,回放等。如果游戏中控制运动的都是使用了Time.deltatime的话,则可以通过设置Time.timeScale=0来暂停其运动等。
  8. Time.frameCount 总帧数
  9. Time.realtimeSinceStartup 表示自游戏开始后的总时间,即使暂停也会不断的增加。(一般用作性能测试)
  10. Time.captureFramerate 表示设置每秒的帧率,然后不考虑真实时间。
  11. Time.unscaledDeltaTime 以秒计算,完成最后一帧的时间 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。
  12. Time.unscaledTime 从游戏开始到现在所用的时间 不考虑timescale时候与time相同,若timescale被设置,则无效。
    2、GameObject类:
    (1)、属性、变量:
  13. GameObject.activeInHierarchy 游戏物体是否处于激活状态,与父类有关,父类被取消激活,则子类也是取消激活的
  14. GameObject.activeSelf 自身的激活状态,与父类无关,只与自身有关。(控制组件的激活与取消激活则使用.enable=false/true)
  15. GameObject.tag 游戏物体的tag标签,具体的由程序员自定义设置
  16. GameObject.SetActive(false/true) 通过参数的控制来设置其游戏物体的激活状态,true为激活状态,反之为取消激活状态。
    (2)、UnityEngine.Object中的共有方法与变量
  17. name
  18. Destroy()
  19. DontDestroyOnLoad()
  20. FindObjectType<>
  21. FindObjectsType<>
  22. FindGameObjectWithTag
  23. FindGameObejctsWithTag
    (3)、消息的发送
  24. BroadcastMessage()
  25. SendMessage()
  26. SendMessageUpwards()和BroadcastMessage()是相反的
    (4)、游戏组件的查找
  27. Cube cube = target.GetComponent();
  28. Cube[]cc= target.GetComponents();
  29. Cube[] xx = target.GetComponentsInChildren();
  30. Cube[] yy = target.GetComponentsInParent();
    3、MonoBehaviours的类:
    (1)、继承的变量成员
  31. enabled
  32. isActiveAndEnabled 只读的
  33. tag
  34. name
    (2)、Invoke等方法、变量:将添加要调用的方法添加到等待队列中,然后等待用户设定的时间后,进行队列中的方法调用。
  35. Invoke(“方法1”,float time): 在等待time的时间后调用方法1
  36. bool i= IsInvoking(“方法1”)
  37. InvokeRepeating(“方法1”,time,number): 等待time时间后,会重复开始运行方法1,每秒钟运行number次。
  38. CancelInvoke() 会暂停通过Involve/InvokeRepeating的运行,但是一般来说CancelInvoke会和InvokeRepeating组合调用。参数由自己设定
    扩充:在脚本的类前添加[ExecuteInEditMode]:则该脚本不用按游戏运行按钮就会开始编译,只限在编辑模式里面
    在脚本的共有变量前添加[HideInInspector]:则该共有变量不会在Inspector面板进行显示
    4、Coroutines:协程:
    1、定义协程:IEnumerator 方法名()
    {
    yield return 0/null ;
    yield return new WaitForSeconds(1.0f); //等待一定时间在运行下面的代码
    }
    2、开启协程:StartCoroutines(方法名());
    说明:协程开启会继续执行下面代码,不会等协程方法运行完再执行接下来的方法
    3、开启与关闭协程时,StartCoriutine(参数)、StopCoroutine(参数) 其中的参数要互相对应,如果传递的是方法名,则两个方法中的参数就要是方法名,如果是IEnumerator的返回值,则其中两个方法发的参数就要是IEnumerator的返回值
    1、 private IEnumerator coroutine;
    coroutine = WaitAndPrint();
    StartCoroutine(coroutine);
    StopCoroutine(coroutine);
    2、StartCoroutine(“WaitAndPrint”);
    StopCoroutine(“WaitAndPrint”);
    4、StopAllCoroutines() 停止所有的协程,不管你是怎么调用的
    5、Mathf类:所有的成员均为静态的
    Mathf.Abs() 返回绝对值的
    Mathf.Ceil() 向上取整的,10.1—>11
    Mathf.Clamp(value,min,max) 如果value的值在min–max之间的话就返回value,但是如果value的值小于min,则返回min,
    Mathf.ClosePowerOfTwo(value): 取得离value的2次方最近的值
    Mathg.DeltaAngke: 取得两个角度之间的最小夹角
    Mathf.Floor 向下取整
    Mathf.Pow(i,j) 取得i的j次方
    Mathf.MoveToWards() 一般用来做移动控制,是匀速的运动,加速度固定的
    Mathf.Lerp() 差值运算,一般是用来控制动画、运动,越往后运行的越慢的。
    Mathf.PingPong(t,maxValue)
    6、Vector2;二维向量
    magnitude: 返回向量的长度
    normalized
    Normalize()向量化,但是调用该方法会改变原向量值,使其的值被向量化
    ClampMagnitude() ;将一个向量限制在参数中指定的长度之间
    MoveToWards() 用来做匀速的运动,由一个位置向另一个位置进行移动
    sqrMagnitude 对求向量的的长度时不进行开平方根运算
    扩充:向量是结构体,为值类型,修改其中的变量的时候要整体进行修改,不能单独的进行单个变量的赋值修改
    7、Vector3:三维变量
    Cross() 插乘运算【左手法则】,通过两个向量来获得另一个向量的方向,然后进行相关的判断
    Project() 投影运算
    Reflect() 反射运算
    Slerp() 按照角度进行插值,与lerp的按照位置信息进行插值的,一般用在炮台的旋转,使旋转的更加平滑
    8、Random随机数类:
    InitState()伪随机数。一般要生成的随机数不同,可以设置参数为System.DataTime.Now.Ticks:通过时间戳来完成
    insideUnitFCircle在单位为1的园内随机生成一个位置信息,如果要在更大的圆中生成,则可以在后面圆的半径信息。
    insideUnitSphere: 在单位为1的球内随机生成一个位置信息,如果要在更大的球中生成,则可以在后面
    圆的半径信息。
    9、四元数 Quaternion:
    .eulerAngles 将四元数转变为欧拉角
    Euler() 将欧拉角转变为四元数
    .LookRotation() 让玩家通过设置四元数来进行望向敌人的旋转,将向量方向转变为四元数
    Vector3 temp = enemy.position - player.position; //获得两个位置信息之间的变量
    enemp.y = 0; //如果不想主角在望向他的时候出现低头的情况,也就是y轴的值出现了变化了。
    player.rotation= Quaternion.LookRotation(temp);
    slerp() 在做朝向的旋转的时候,不建议使用lerp,而是建议使用slerp,使其的旋转朝向更为平滑,更加的自然
    Quaternion target= Quaternion.LookRotation(temp);
    player.rotation = Quaternion.Slerp(player.rotation, target, Time.deltaTime); //插值的缓慢旋转
    10、Rigidbody:刚体组件,控制角色的移动
    .position
    MovePosition() 对position的优化,利用了插值运算
    .rotation:
    MoveRotation建议使用MoveRotation(),然后配合Quaternion,slerp()进行使用,使其更加的平滑
    AddForce() 当进行短时的加速则可以给以限定时间的AddForce方法
    11、Camera;相机组件:
    Ray ray = cameraMain.ScreenPointToRay(Input.mousePosition); //获得相机到鼠标之间的射线
    RaycastHit hit; //用来存放射线检测到的游戏物体的信息的
    bool temp = Physics.Raycast(ray, out hit); //进行射线检测
    12、SceneManager场景类
    SceneManager.LoadScene()
    SceneManager.LoadSceneAsync()
    sceneCount
    sceneCountInBuildSettings
    GetActiveScene()
    GetSceneAt(index)
    当加载新的场景的时候会触发下面的事件:
    activeSceneChanged
    sceneLoaded
    扩充:事件的注册时通过加方法来进行注册的:
    SceneManger.activeSceneChanged+=OnAcitiveScenenChanged;
    13、射线检测:一般射线检测要在射线检测的范围内,并且被检测物体要有Collider
    Ray ray=new Ray(起点,方向);
    PaycastHit hit; //hit中存放的是射线检测的碰撞信息
    bool temp=Physics.Raycast(ray,out hit); //具体的重载方法边用边查
    Ray ray = new Ray(this.transform.position + transform.forward, transform.forward);
    RaycastHit hit; //存储射线检测到的游戏物体信息
    if(Physics.Raycast(ray,out hit)) //通过返回值来判断射线是否检测到相关的物体了
    {
    Debug.Log(hit.collider.gameObject.name);
    }
    扩充:
    Raycast;检测的是射线碰撞到的第一个物体,不具有穿透性
    RaycastAll:返回的是RaycastHit数组,具有穿透性,可以返回检测到的多个游戏物体
    14、代码监听触发事件:
    ().onClick.AddListener(方法名); //当触发button组件,则会触发指定的方法名的方法
    通过实现接口来注册监听事件: using UnityEgine.EventSystems; 导入命名空间
    IPointerDownHandler 鼠标按下的事件
    Raycast Target: 如果取消勾选则不做事件监听,无法实现检测
    15、www类,下载 是用来在网络中下载资源的,
    public string url = “http://img.taopic.com/uploads/allimg/120727/201995-120HG1030762.jpg”;
    IEnumerator Start()
    {
    WWW www = new WWW(url);
    yield return www;
    Renderer renderer = this.GetComponent();
    renderer.material.mainTexture = www.texture;
    }
    16、Debug.DrawRay(ray.oridin,ray.direction) 绘制射线,第一个参数是原点,第二个是方向
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CompletableFuture是Java 8中引入的一个类,用于支持异步编程和并发操作。它提供了丰富的API来处理异步任务的结果和操作。以下是CompletableFuture的一些常用API: 1. `CompletableFuture.supplyAsync(Supplier<U> supplier)`:创建一个CompletableFuture对象,该对象会在异步执行给定的Supplier任务后返回结果。 2. `CompletableFuture.runAsync(Runnable runnable)`:创建一个CompletableFuture对象,该对象会在异步执行给定的Runnable任务后返回结果。 3. `CompletableFuture.thenApply(Function<? super T,? extends U> fn)`:对CompletableFuture的结果应用给定的函数,并返回一个新的CompletableFuture对象。 4. `CompletableFuture.thenAccept(Consumer<? super T> action)`:对CompletableFuture的结果应用给定的消费者函数,不返回任何结果。 5. `CompletableFuture.thenRun(Runnable action)`:在CompletableFuture完成后执行给定的Runnable任务。 6. `CompletableFuture.thenCombine(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)`:将两个CompletableFuture的结果进行组合,并将结果应用给定的函数。 7. `CompletableFuture.thenCompose(Function<? super T,? extends CompletionStage<U>> fn)`:对CompletableFuture的结果应用给定的函数,并返回一个新的CompletableFuture对象。 8. `CompletableFuture.exceptionally(Function<Throwable,? extends T> fn)`:在CompletableFuture发生异常时,应用给定的函数处理异常,并返回一个新的CompletableFuture对象。 9. `CompletableFuture.whenComplete(BiConsumer<? super T,? super Throwable> action)`:在CompletableFuture完成后,应用给定的函数处理结果或异常。 10. `CompletableFuture.allOf(CompletableFuture<?>... cfs)`:返回一个CompletableFuture对象,该对象在所有给定的CompletableFuture对象都完成后完成。 以上是CompletableFuture的一些常用API,你可以根据具体的需求选择适合的方法来处理异步任务。如果你有具体的问题或需要更多的示例,请告诉我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值