Unity3D知识点

1.在使用Canvas中布局组件是得不到修改该后的效果

///官方解释:
///强制所有画布更新其内容。
///画布在帧末尾、即将渲染前执行其布局和内容生成计算,以确保计算基于该帧期间可能发生的所有最新更改。也就是说,在 Start 回调和第一个 Update 回调中,画布下的布局和内容可能不是最新的。
///依赖于最新布局或内容的代码可以调用该方法,以确保它在依赖它的代码前执行。
Canvas.ForceUpdateCanvases() //强制刷新Canvas页面
//方法二 版本2018.4.2f1
//刷新操作对象的上级布局组件
    IEnumerator UpdateLayout(RectTransform rect)
    {
        LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
        yield return new WaitForEndOfFrame();
        Vector3 vecScale = rect.localScale;
        float width = rect.rect.width;
        float height = rect.rect.height;
        while (rect.rect.width == 0)
        {
            Debug.Log(rect.rect.width);
            LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
            yield return new WaitForEndOfFrame();
        }
    }

2.判断对象为空使用其他方式进行优化 参考内容

///普通使用
if (gameObject == null)
{}
///使用优化方法
if (System.Object.ReferenceEquals(gameObject, null))
{}

3.判断对象的标签不使用 “ . ” 来点出Tag()

///普通使用
Gameobject.tag()
///使用优化方法
Gameobject.CompareTag()

4.在性能不敏感的时期主动出发垃圾回收(System.GC.Collect方法),比如在切换场景,暂停游戏时等。

System.GC.Collect()

5.World Canvas

为World  Canvas指定一个Camera,否则它会每帧都执行Camera.Main,而Camera.Main会持续调用Gameobj.Find方法

6.UnityObject的InstanceID

必要情况下,在Dictionary的键中,我们要缓存Unity对象时,使用UnityObject的InstanceID来作为字典的键,而不是直接使用Object的引用。

7.比较

==它是比较的栈里面的值是否相等(值比较)

Equals它比较的是堆里面的值是否相等(引用地址值比较)

Object.ReferenceEquals(obj1,obj2)它是比较的是内存地址是否相等

8.颜色编码和Color之间的转换。待验证

Color color = ColorUtility.ToHtmlStringRGB(strcolor);

private Color GetColor(string colorcode)
{
    Color color;
    StringBuilder sb = new StringBuilder("#");
    sb.Append(colorcode);
    ColorUtility.TryParseHtmlString(sb.ToString(), out color);
    return color;
}

9.在计算向量夹角时总是会得到0~180内 ,参考内容

/// <summary>
/// Determine the signed angle between two vectors, with normal 'n'
/// as the rotation axis.
/// </summary>
public static float AngleSigned(Vector3 v1, Vector3 v2, Vector3 n)
{
  return Mathf.Atan2(
      Vector3.Dot(n, Vector3.Cross(v1, v2)),
      Vector3.Dot(v1, v2)) * Mathf.Rad2Deg;
}

10.在使用Video Player和Audio Source 时没有声音,重置DSP设置为此状态。
Edit>>Project Settings>>Audio

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值