一、Interactable脚本
Interactable是一个Unity3D中的脚本,用于将物体标记为可交互。一个被标记为Interactable的物体可以被玩家或其他游戏中的对象“触摸”,并且可以触发相应的行为。
例如,当玩家点击标记为Interactable的按钮时,按钮将触发一个事件,如弹出一个菜单、播放动画等。
public class Interactable : MonoBehaviour { public UnityEvent OnTouch; private void OnMouseDown() { OnTouch?.Invoke(); } }
二、InteractableObject获取触摸物体
InteractableObject是一个基于Interactable的脚本,它允许玩家与Interactable物体进行交互。
使用InteractableObject脚本需要提前把Interactable脚本添加到需要交互的物体上。
当玩家与物体进行交互时,InteractableObject将返回玩家所触摸的物体,这可以帮助我们进行其他行为的操作,例如可拖动对象、放置对象等交互行为。
public class InteractableObject : MonoBehaviour { private Interactable currentObject = null; private void FixedUpdate() { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { Interactable obj = hit.collider.GetComponent(); if (obj != currentObject) { if(currentObject != null) { currentObject.OnTouch.RemoveListener(this.OnSelectObject); } currentObject = obj; if(currentObject != null) { currentObject.OnTouch.AddListener(this.OnSelectObject); } } } else { if(currentObject != null) { currentObject.OnTouch.RemoveListener(this.OnSelectObject); } } } private void OnSelectObject() { Debug.Log("Selected Object: " + currentObject.gameObject.name); // Add your interactive action here } }
三、Interactable Python
Interactable Python是基于Python编写的一个便捷的框架,用于编写交互式应用程序。
使用Interactable Python,可以通过在Python脚本中写入代码来处理用户输入和输出。
import interactable as ia def my_function(): ia.print("Hello, world!") ia.run(my_function)
四、Interactable
Interactable类是由C#编写的,它提供了一组有用的方法,用于处理与Interactable对象的交互。
例如,它可以派生出一些用于特定类型对象的子类,例如InteractableButton、InteractableSlider等。
public class Interactable { public GameObject gameObject { get; set; } //Register this object with user input system public void Register() { // Add your code here } //Unregister this object with user input system public void Unregister() { // Add your code here } }
五、Interact
Interact是一个可以被添加到Interactable对象中的脚本,它提供了一组用于处理对象交互的方法。
例如,当对象被点击或当鼠标滑过对象时,Interact脚本将触发相应的事件,如OnHoverEnter、OnHoverExit、OnSelect等。
public class Interact : MonoBehaviour { public UnityEvent OnHoverEnter; public UnityEvent OnHoverExit; public UnityEvent OnSelect; private void OnMouseEnter() { OnHoverEnter?.Invoke(); } private void OnMouseExit() { OnHoverExit?.Invoke(); } private void OnMouseDown() { OnSelect?.Invoke(); } }
六、Interact With
Interact With是一组方法,它们可以帮助我们处理对象之间的交互。
例如,在操作一个物体时,可以用 InteractWith 函数找到另一个物体来进行操作,并且可以使用 PerformAction 函数执行相应的操作。
public class InteractWith : MonoBehaviour { public GameObject targetObject; public void PerformAction() { // Add your code here } private void OnMouseDown() { InteractWith other = targetObject.GetComponent(); if(other != null) { other.PerformAction(); } } }
七、Establish
Establish是基于Interactable的一种行为,它用于建立对其他对象的连接或通信。
例如,我们可以使用Establish函数建立与另一个Interactable的连接,并在连接上进行数据传输或发送消息。
public class Establish : Interactable { public void EstablishConnection(Interactable other) { // Add your code here } public void SendMessage(string message) { // Add your code here } }
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/246013.html