2016-05-06 6 views
3

C私は、動的にJSONファイル/ URLからscrollviewに画像を追加している追加クリッカブルゲームオブジェクトだから、#

私はクリック可能なゲームオブジェクトの画像を作るのが好き、しかし、どのように((C#でのボイドれるonmousedownこれを行うには考えています)???)

IEnumerator AddFeedItem (int index) 
{ 
WWW www = new WWW (ModelURL); // img url 
yield return www; 

GameObject newsimageObject = tempFeedItem.transform.FindChild ("newsimage").gameObject; 
Image newsImage = newsimageObject.GetComponent<Image>(); 
Texture2D tempTex = photos [index % 10]; 

SpriteRenderer renderer = newsImage.GetComponent<SpriteRenderer>(); 
Sprite sprite = new Sprite(); 
sprite = Sprite.Create(www.texture, new Rect(0, 0, 455, 230),new Vector2(0, 0),100.0f); 

newsImage.sprite = sprite; 
} 
+0

2つの方法があります。まず 'Image'を使用して、すべてのオブジェクトをUIに配置することができます。次に、SpriteRendererオブジェクトを作成することができます。最初のケースでは、Unity UIに含まれている 'ScrollView'を使用し、イベントを使用して入力を処理できます。 –

+2

Kevin dude、WTF? Unityに組み込まれているUIシステムを使用してください。あなたがしていることは狂気です! https://unity3d.com/learn/tutorials/topics/user-interface-ui – Fattie

答えて

3

Image/Canvasです。 RaycastOnMouseDownは避けてください。 Image/Canvasでタッチを検出するには、IPointerDownHandlerまたはIPointerClickHandlerから派生し、次に関数を実装する必要があります。 Objectが3Dモデルである場合、またはオブジェクトがCanvas NOTあるSpriteであればOnMouseDown又はRaycastのみを使用すべきです。その場合、コライダーが必要です。この場合、Imageコンポーネントを使用しているので、これはCanvasの下にあると仮定します。

public class YourClass : MonoBehaviour,IPointerDownHandler,IPointerClickHandler 
{ 
    public void OnPointerClick(PointerEventData eventData) 
    { 
     Debug.Log("Clicked"); 
    } 

    public void OnPointerDown(PointerEventData eventData) 
    { 
     Debug.Log("Down"); 
    } 

} 
+0

どうして避けたいのですか? Raycastsはかなり効率的で、何度も呼び出すことができるので、ちょっと好奇心が強いです。それはインターフェイスの使い方が使いやすいかどうかです。 – ryrich

+0

これは正しいですが、 'Assets/scripts/clickTest.cs(5,60):get CS0246:型または名前空間名' IPointerClickHandler 'が見つかりませんでした。 usingディレクティブまたはアセンブリ参照がありませんか? ' –

+1

@ryrichイメージ/キャンバスを使用しているため、避けてください。 UIイベントはそのためのものです。 Raycastの場合はImageにコライダーを、Imageコンポーネントの場合はOnMouseDownを使用して作業する必要があります。イメージコンポーネントの使い方ではありません。 Imageコンポネントにはコライダーを接続しないでください。時間と資源の無駄。 – Programmer

0

てみてくださいそのゲームオブジェクトにatached BoxCollider2Dオブジェクトを作成し、

Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Mouse.position)、Vector2.zero)を使用します。

Mouse.positionにColliderがあるかどうかをテストします。

+0

oky私はBoxCollider2D http://i.imgur.com/DAeYjpp.pngを追加しました。ここで 'Physics2D.Raycast(Cam .. .. go? –

+0

私は常にUpdate()に書き込みます。 ターゲットポイントにコライダーがある場合のみ、レイキャストはRaycastHit2Dを返します。そうでない場合はfalseを返します。 if(HitInfo) { } – ORParga

関連する問題