質問: ### 前提・実現したいこと ContentSizeFitterコンポーネントの使い方がわかりません。 ContentSizeFitterコンポーネントは、子のオブジェクトの大きさに応じて、親のオブジェクトをリサイズすることができて、 親オブジェクトのほうにContentSizeFitterコンポーネントをアタッチするという考え方で合っていますか? この考え方が正しければ、子のテキストオブジェクトの大きさが変わった際に、 親のImageオブジェクトがリサイズされるという実装ができると思うのですが、 こちらの記事では、子オブジェクトにImageオブジェクトを、親オブジェクトにテキストオブジェクトを設置しています。 テキストオブジェクトの大きさに応じて、背景のImageオブジェクトをリサイズするというやり方は 上記の記事のやり方しかないのでしょうか? また、上記の記事で、ImageオブジェクトにCanvasコンポーネントをアタッチする意味もわかりません。 上記の記事の要件を満たす実装に、もっと簡単な方法があるのではないか?と思ってしまいます。 ご教授のほど宜しくお願い致します。
回答: 本家のマニュアルでは、背景となるオブジェクトの子としてテキストオブジェクトを配置する例が紹介されており(日本語版は翻訳がちょっと珍妙だったので、英語版の方がいいかもしれません)、こちらはご質問者さんの考え方に沿っていると思います。 * 親として、背景となるImageなどのオブジェクトを配置 * 親の子としてTextなどのオブジェクトを配置 * 親にHorizontal Layout Group(子オブジェクトを垂直に並べたい場合はVertical Layout Group)をアタッチ、適宜PaddingやSpacingで親と子、子同士の余白を設定 * さらにControl Child Sizeにチェックを入れると、親のサイズに合わせて子のサイズが調節される * 親にContent Size Fitterをアタッチ、Horizontal FitやVertical FitをPreferred Sizeに設定 これで子オブジェクトのサイズに合わせた大きさになるよう親オブジェクトが伸縮するかと思います。また、Control Child Sizeがチェックされていれば、子のテキストが変化して最適サイズが変わっても、自動的に追従して伸縮するでしょう。 ご提示のサイトの方のアプローチは、「TextオブジェクトにContent Size Fitterをアタッチして、Textオブジェクトのサイズをコンテンツ(入力されているテキスト)に応じて伸縮させ、さらに子のImageオブジェクトのサイズを親のTextオブジェクトに追従するように設定する」という考え方かと思います。 UnityゲームUI実践ガイド 開発者が知っておきたいGUI構築の新スタンダードの113ページを参考にされたそうですが、Amazonでそのページを読むことができず、詳しい内容は分かりませんでした。