U3D学习笔记(7)



1.layermask 这样写mask .value =1<<ui num |1<<plane num (而不是1<<ui num |plane num! )
 然后Raycast 里必须加上maxdistance 参数否则无效layermask 无效!
 当碰撞到ui 层则返回(此时按钮点击仍然有效因为是另外一条射线处理canvas 层的响应),主要是为了不让ui层和别的层交互
2.脚本Enable 为false 后里面写的ontriggerenter 等物理属性还会继续判断,只有update 和start 停止了更新。(真理)
3.U3d 暂停可以用Time .timescale =0来实现,但是它只是暂停了fixedupdate ,而update 和delayupdate 并没有暂停
4.Find Gameobject s withtag 是按照在层级面板添加物体顺序存放到一个数组里,而不是按渲染顺序,最后创建的放在a[0]里
5.Dotween 学习:
 -2.把Dotween 的各种以do 开头的当成动作,然后使用Dotween .sequence .append 来添加依次播放的动作,用.insert(a,b )用来在第a 秒(也可以写duration /2表示这一套动作到一半时执行)同时播放动作b .最后也可以加上一个回调函数。但记得把那些动作添加在append 里面而不是先写好然后再append ,这样会执行两次!
 -1.oncomplete 等以on 开头的表示Dotween 回调用在某个动作完成之后调用某个函数
 0.照相机也可以用Dotween 的晃动,颜色也可以用它改
 1.常用来实现Gameobject 的各种动作,如走路,跳跃,摇晃(shake )
 Kill 用来关闭所有动画,返回杀死数
 2.不只是Gameobject.有,button .domov 等等很多都包含Dotween 类的,要用动画时不妨试一下直接.Dotween 来看。(但本质还是调用了它们的Gameobject 组件,这里封装的很好)
 2.5image 等组件特有dofade 方法,渐隐
 Text 组件有dotext 可以设置文字段出来的速度(逐个出来)。
 ,transform 组件有dopath 可以让物体沿一定轨迹运动
 3.循环是动画里经常使用的东西setloops (-1,looptypes .a )),a 有三种,
 Yoyo :从起点到终点,再从终点到起点
 Restart :到终点再回到起点再到终点
 Increce :持续增加
 4.puntch 用来在两个数值之间不断变化,可以用来做出按钮点击后那种不断有弹性的效果,vibrato 用来设置变化速度,最后一个设置弹性强度
 5.ease 也有缓冲变化的效果,如inoutbonoud 就是有弹性的变化
 6.dopuntch Position 后面加的是方向和距离,不用加上自己的位置
6.游戏镜像分身相关:
 1.再创建一个自身对象而已clone
 2.把clone 的tag 改为别的
 3.在attack 脚本里把场景中按钮的remove listner 取消clone 的按钮监听
 4.用invoke 在技能对象被销毁的前一秒,调用attack 里的取消监听函数,并且销毁该cloned 对象
 5.下面是重点:对于一个场景按钮,如果许多对象通过find 都找到了这个按钮,并且都通过addlistener 添加了事件,那么按下按钮所有都会响应,但是只有第一个会获得传入的东西,如奖励技能,只有第一个(越后创建的是第一个)这里是clone 的那一个会获得传入的技能,而后面的全部传入为空(但是后面都还会执行换技能这个操作所以都获取不到技能就会报错),所以需要设置一个tag ,如果是clone tag ,那么不addlistener 这个按钮点击事件,就能让tag 为player 的获得这个变量了
7.滚动条效果
 1.先创建一个panel作为遮罩,添加scorerect 组件放入它的content 里的东西将可以拖动和回弹,修改一下它的大小。并且添加mask 组件遮掉这个panel 以外部分的显示
 2.在创建一个panel 作为要显示的内容,添加grid layerout group 组件这样添加东西进去它会自动布局(水平竖直布局自己选),并把它拖到1中的scorerect 里。在随便添加几个按钮,运行看效果。
 3.滚动条只是为了显示或改变当前scorerect 里面显示的内容,如果你不喜欢直接拖动来显示或者想像网页上那种鼠标中键拖动的效果可以使用,加在1里的scorerect 里的scorebar 里。
8.通过transform .parent 来重新设置父子关系,实例化的也是这样设置
9.按钮如果监听带参数的函数,则必须使用delegate 或者lambda 来传递参数。即Onclick .addlistener (delegate ({this .f (x )}));
10.如果是添加了grid layerout group 组件那么会自动布局,然后你在里面实例化许多按钮都会自动帮你排版,但是注意实例化的按钮在start 里面的anchorPosition 是你初始化时的位置而不是你布局后的位置,所以如果要做拖拽技能不成功返回原地,那么这个原地必须不是start 里获取的anchor Position ,而是你start 下一帧(Update里获取)获取的那一个。自动布局状态下无法改变按钮们的Recttransform 位置


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值