阅读国外Coder教程时的笔记,Object Management篇(五)ScenceManager

原文地址:https://catlikecoding.com/unity/tutorials/object-management/multiple-scenes/
阅读国外Coder教程时的笔记,Object Management篇(一)
阅读国外Coder教程时的笔记,Object Management篇(二)
阅读国外Coder教程时的笔记,Object Management篇(三)
阅读国外Coder教程时的笔记,Object Management篇(四)

1.Random下的几个方法
Random.Range(a,b)
随机在范围内获得值,值的类型由前面的值决定。比如int a.Range.Range的话,随机出来的值就是int类型;相对的,float的话随机出来就是float类型的。这里注意的是随机出来的数会出现a,但不会出去b。教程里我发现Vector3等向量类型的也是适应这个方法的,当然随机出来的是向量类型的,并且可以用下面两个方法。
Random.insideUnitSphere
Random.onUnitSphere
前者是获得单位圆内的某个点,后者则是获得单位圆表面的点。

2.有关Gizmos
你可以把它理解为辅助开发设计的一个工具(不支持在发布后的游戏中显示),可以在编辑模式下绘制辅助图形,在游戏模式下也是可以打开的。
在这里插入图片描述
我们可以创建自定义方法onDrawGizmos去使用它。跟碰撞体的使用方法很相似,我们不用在语句中调用它,脚本激活后方法自动在编辑模式下生效。还要一种是onDrawGizmosSelected,意思就是只有你在Hierarchy面板中选中物体才能看到绘制的Gizmos。
Gizmos下的几个方法:
Gizmos.DrawWireSphere 绘制一个圆,需要传入圆点向量和半径值
Gizmos.DrawLine 绘制一条线,需要传入有一个代表起点和终点的向量
Gizmos.color 设置Gizmos图形的颜色,不设置则为白色
Gizmos.matrix 我的理解是设置Gizmos绘制时坐标的参考父物体,我们可以传入transform.localToWorldMatrix,设置图形绘制参考坐标以xx物体为参考。
3.不同场景之间脚本的调用
我们在一个脚本中引用另一个脚本有很多中方法,可以用FindObjectTypeOf给事先定义好的该脚本变量传值。或者也可以直接把变量设置成public,然后可以在Inspector面板中,通过把带有目标脚本的物体拖入以达到传入值的目的。这样即方便又可以少写一句代码。但是如果目标脚本的物体是别的场景的呢?答案是我们无法拖拽进去,且之前拖拽进去赋的值也会丢失,unity也会有错误提示。
在这里插入图片描述
这个时候可以通过关键字static设置全局变量,建立脚本与脚本之间的联系。
(这里以SpawnZone和CreatingGame这两个脚本为例)

 public SpawnZone spawnZoneOfLevel { get; set; }
 public static CreatingGame Instance { get; private set; }
 private void OnEnable()
 {
     Instance = this;
 }
    //这里用OnEnable而不是Awake的理由是,场景切换其实就是把脚本给disable了。

通过以上设置,越过场景也可以通过CreatingGame.Instance.spawnZoneofLevel的形式给该变量赋值。(这里我发现加了{get;set;}后,即使是public的变量也无法在Inspector面板赋值,即只能通过脚本内代码赋值)
4.Vector类型的值,其实也是一个数组
如果把一个Vector3类型的值a写成a[i],即代表这个向量在某个轴上的值,i可以是0,1,2,分别代表x,y,z轴。

 int axis = Random.Range(0, 3);
 p[axis] = p[axis] < 0f ? -0.5f : 0.5f;
 //这里代码的意思是,向量p各个轴上的值根据正负,会变为0.5f或-0.5f。

以上,希望可以帮到大家的学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值