Untiy技巧

#一、描述 此文章介绍一些Unity中一些技巧 参考网站: Unity小技巧 #二、说明

1 在画Debug线的时候,会发现好像执行了没有线出来?

(1)首先确定是否在Scene界面查看的

(2)你绘制线是只执行一次,还是会频繁的执行?因为他画线很快,消失的也快,所以你会以为他没有出现。

//这个适用于频率高的,因为会一直执行绘制方法
Debug.DrawLine(transform.position,vector3,Color.blue);
复制代码
//这个适用于比如点击事件的,会有一个持续事件存在,我感觉好像时间过了还存在的,不是很清楚
Debug.DrawLine(transform.position,vector3,Color.blue,10000);
复制代码

(3)只删除gameobject 脚本组件会残留

彻底删除方法如下:

GameObject go = new GameObject();
Component c = go.GetComponent<Component >();
MonoBehaviour.DestroyImmediate(c);
MonoBehaviour.DestroyImmediate(go);
复制代码

(4)单例模式慎用

如果一个GameObject对象为单例对象,请小心在其他的GameObject的OnDestory里引用该单例 因为在程序关闭前会执行所有GameObject的OnDestory,但是执行的先后顺序不定。

如果GameObject_1在OnDestory时引用GameObject_2(单例对象),假设GO2的OnDestory先运行,这时候它的

Instance为null,被GO1引用时它会再创建一次。 而如果在OnDestory里创建任何对象,该对象都将不会被UnityEngine释放,一直保留下来。

(5) 可以打印方法执行的时间

Stopwatch sw = new Stopwatch();
sw.Start();
TestMethod();
sw.Stop();
UnityEngine.Debug.Log(string.Format("total: {0} ms",sw.ElapsedMilliseconds));
复制代码

(6)局部坐标和世界坐标

 transform.TransformDirection (targetDir)
复制代码

为什么需要把本地的坐标转换成世界的坐标?

因为你对物体的所有操作,比如旋转人物,旋转了30度,这个人物的Z轴被你改变了,但是这个物体相对于世界坐标来说,他的Z轴是不变的,这个时候你想通过代码移动他,就必须把你本地的所有移动的操作转换成世界坐标来。

不懂的可以通过下面的方式来实验:

Global显示,代表你现在是世界坐标 Local显示,代表你现在是局部坐标

(7)为字段声明的代码中加上 [Tooltip(“XX”)]属性声明,在检视面板中,当鼠标悬停在字段名上,会出现 Tooltip中指定的提示信息,让策划人员能更好地理解字段代表的意思。

(8) 在类上加上[System.Serializable],这样在面板上就可以设置对应的属性

[System.Serializable]
    public class AnimationStateIdle : AnimationState{
        
    }
复制代码

(9)设置图片后,发现背景有黑边

设置以下Shader可以解决

(10) 如果创建的Button点击没有反应,检查EventSystem是否被删除了,需要有这个组件才会响应.

(11)多张动画图片,让他们生成动画文件

1 把上面的5张图片全部选择,拖动到Hierarchy面板上,之后他会自动生成动画文件,和动画控制器,这样之后你只需要在给需要动画显示的物体上添加Animator组件和添加这个控制器上去就可以进行动画的显示了。

转载于:https://juejin.im/post/5b3ac8bef265da62fd73854a

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值