|
从最直观得逻辑出发,A触发点击时会自动调用A的OnMouseDown,这时候如果B想知道,那肯定需要在A的OnMouseDown里调用B的函数来通知B A被点击了,无论B里的这个函数叫啥名字.
调用MonoBehaviour里的函数需要首先知道GameObject,也就是首先需要知道B的脚本到底挂在哪个物体下,所以无论用什么方法,GameObject.Find也好,Transform.GetChild也好,都行,总之你找到B的GameObject就行,然后再GetComponent获取B的脚本.然后你就可以调用你想调的函数了.
从架构更好的逻辑上出发.当A被点击触发OnMouseDown时,应该只是通知核心逻辑自己被点击了,而被点击了会发生什么事情A并不会关心,由核心逻辑来决定具体执行什么.为什么要这么设计呢.A被点击只是触发一些事件,但是这些事件只能由A被点击这个操作触发吗?一般来说一个事件可能被多个操作触发.所以在具体触发的地方并不需要写到底该怎么办,否则每一个触发的地方都要写一遍.A被点击触发核心的一个逻辑,在这个逻辑里你干什么都行,通知B,删掉B,甚至删除所有东西都行. |
|