一、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
微信扫一扫
支付宝扫一扫