添加可点击的游戏对象c#
因此,我将动态地从json文件/url向scrollview添加图像 我喜欢让图像成为可点击的游戏对象,但不知道如何在c#(void OnMouseDown())中实现这一点添加可点击的游戏对象c#,c#,unity3d,C#,Unity3d,因此,我将动态地从json文件/url向scrollview添加图像 我喜欢让图像成为可点击的游戏对象,但不知道如何在c#(void OnMouseDown())中实现这一点 IEnumerator AddFeedItem(int索引) { WWW=newwww(ModelURL);//imgURL 收益率; GameObject newsimageObject=tempFeedItem.transform.FindChild(“newsimage”).GameObject; Image new
IEnumerator AddFeedItem(int索引)
{
WWW=newwww(ModelURL);//imgURL
收益率;
GameObject newsimageObject=tempFeedItem.transform.FindChild(“newsimage”).GameObject;
Image newimage=newsimageObject.GetComponent();
Texture2D testex=照片[索引%10];
SpriteRenderer renderer=newsImage.GetComponent();
精灵精灵=新精灵();
sprite=sprite.Create(www.texture,newrect(0,0455230),newvector2(0,0),100.0f);
newsImage.sprite=sprite;
}
尝试创建一个绑定到该游戏对象的BoxCollizedR2D对象,然后使用
Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Mouse.position),Vector2.zero)
测试鼠标位置是否有碰撞器。这是一张
图像
/画布
。您应该避免Raycast
和OnMouseDown
。要检测图像/画布的触摸,您必须使用从ipointerndownhandler
或ipointernclickhandler
派生,然后从中实现功能<如果对象是3D模型,或者如果对象是Sprite
而不是画布下的精灵,则应使用OnMouseDown
或Raycast
。在这种情况下,需要一个对撞机。在本例中,您使用的是图像
组件,因此我假设它位于画布
下
public class YourClass : MonoBehaviour,IPointerDownHandler,IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("Clicked");
}
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("Down");
}
}
有两种方法。首先,您可以使用Image
并将每个对象放到UI上。其次,您可以创建具有SpriteRender的对象。在第一种情况下,您可以使用Unity UI中包含的ScrollView
,并使用事件来处理输入?只需使用Unity内置的UI系统。你所做的简直是疯了!好的,我现在添加了BoxCollizedR2D,Physics2D.Raycast(Cam…
go?我总是在Update()中写入它。只有当目标点中有任何碰撞器时,Raycast才会返回RaycastHit2D)。。。否则返回false。如果(HitInfo){}嘿,有什么理由应该避免它们吗?我只是好奇,因为我知道光线投射非常有效,可以多次调用-这只是界面方式更容易使用吗?这是正确的,但我得到Assets/scripts/clickTest.cs(5,60):错误CS0246:找不到类型或命名空间名称
IPointerClickHandler'。是否缺少using指令或程序集引用`@ryrich应该避免使用它们,因为您使用的是图像/画布。UI事件就是为了这个。您必须将“碰撞器”附加到图像上,以便进行光线投射和OnMouseDown处理图像组件。这不是如何使用图像组件。永远不要将碰撞器附加到图像组件。浪费时间和资源。@kevinver使用UnityEngine.UI添加代码>和<代码>UnityEngine.EventSystems代码>到脚本的顶部。
public class YourClass : MonoBehaviour,IPointerDownHandler,IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("Clicked");
}
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("Down");
}
}