Unity 小技巧 - 指定拖拽赋值

举报
CoderZ1010 发表于 2022/09/25 06:53:40 2022/09/25
【摘要】 假设有脚本A、B,均继承自MonoBehaviour,那么它们可以以组件的形式挂载于物体上,现在将它们分别挂在物体GameObjectA和GameObjectB上: 在B脚本中声明一个A变量,以public修饰符修饰,那么在B的Inspector面板上即可将挂载A组件的GameObjectA物体拖拽赋值: using Uni...

假设有脚本A、B,均继承自MonoBehaviour,那么它们可以以组件的形式挂载于物体上,现在将它们分别挂在物体GameObjectA和GameObjectB上:

在B脚本中声明一个A变量,以public修饰符修饰,那么在B的Inspector面板上即可将挂载A组件的GameObjectA物体拖拽赋值:


  
  1. using UnityEngine;
  2. public class B : MonoBehaviour
  3. {
  4. public A a;
  5. }

如果继续给GameObjectA挂载一个A组件,再在B的Inspector面板进行拖拽赋值,那么赋值的结果是第一个A组件还是第二个A组件?为了方便测试,我们在脚本A中声明一个string字符串类型变量description,同样以public修饰符修饰:


  
  1. using UnityEngine;
  2. public class A : MonoBehaviour
  3. {
  4. public string description;
  5. }

在A的Inspector面板上分别给该变量赋值:

在脚本B中打印变量a的description值:


  
  1. using UnityEngine;
  2. public class B : MonoBehaviour
  3. {
  4. public A a;
  5. private void Start()
  6. {
  7. Debug.Log(a.description);
  8. }
  9. }

 

可以发现打印的结果是第一个组件A的description值,说明当物体GameObjectA包含两个组件A时,将该物体拖拽给一个声明了A类型的变量的组件后,拖拽赋值的结果是GameObjectA物体挂载的第一个A组件。如果我们想要拖拽的目标是第二个组件A,该如何去实现?

首先要了解Inspector面板右上角锁的作用,点击它可以发现它有两个状态,打开和关闭:

它的作用是,当我们选中一个物体GameObjectA时,将其变为锁定状态,再在Hierarchy层级中选择其他物体时,该Inspector面板显示的仍然是GameObjectA的信息:

了解了锁的作用后,我们就可以实现指定拖拽赋值了,首先选中GameObjectA,锁定该Inspector面板,再在窗口标题处右键,通过Add Tab增加一个Inspector面板,选中物体GameObjectB,此时新的Inspector面板显示的为物体B的信息,之前锁定的Inspector面板显示的物体A的信息,这时即可将GameObjectA上的第二个A组件拖拽赋值到B组件上:       

此时再运行程序,可以发现打印已经是我们想要的信息:

文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。

原文链接:coderz.blog.csdn.net/article/details/122141982

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。