質問: ### 前提・実現したいこと 今unityで簡単なカードゲームを作っています。 カード一覧みたいな画面で、その中からカードを選択するという画面を作りたいのですが、問題が発生しました。 ### 発生している問題・エラーメッセージ ScrollViewを使ってカードリストを実現しようとするとScrollViewは正常な位置にいるのですが、カードだけがcanvasのカメラのほうに映らず、MainCameraのほうに映ってしまいます。カードのレイヤーをUIにしてもダメでした。しかもScrollViewをはみ出てしまうことがあります。 canvasのSence ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/35ef94de6d05e6cebb4a895ff745913a.png) MainCameraのSence ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/2d3331d0813fb6314990d8ce098ac3fd.png) game画面 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/c7bb5ca02810a014b51d3f36fdaee798.png) 構成要素 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/3ee2a631e2fbef1c4c8d36d1e1b51d59.png) いろいろ試した結果、要素をUIにするとcanvas側のカメラに表示されることはわかりましたがカードをUI用に書き直すのは手間がかかりますし、なにより今回はそれで解決できても次回はそうもいかないかもしれないと考えるとやはりcanvas側のカメラに非UIのオブジェクトを表示させる方法を知っておきたいので、方法がなかったりあっても非効率ならよいのですが方法があるとしたら教えていただけるとうれしいです。回答お願いします。 ### 試したこと 表示するカードのオブジェクトのレイヤーをUIにしてみた ### 補足情報(FW/ツールのバージョンなど) Unity 2017.3.0f3 使用言語 C#
回答: Canvas上に描画するにはUI用の各種コンポーネント(ImageとかCanvas RendererとかRect Transformとか...)が必要なはずですし、座標系も異なっているので、やはりご質問者さんのおっしゃる「カードをUI用に書き直す」方針がおすすめのような気がします。 すでにカードを大量に作ってしまっており、手作業で作り直すのが困難であれば、この作業を自動化するスクリプトの作成を検討した方がいいかもしれません。 どうしても非UIオブジェクトの状態でスクロールさせたいとなると、最終的にScrollViewが描画される位置と重なるようにSprite Maskを配置してカードを切り抜けば、あたかもScrollView上に描画されているかのように見せかけることができるかもしれません。これなら少なくとも「ScrollViewをはみ出てしまうことがあります」の方の現象は解消できる可能性があるように思います。