24
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity】Googleスプレッドシートを使ってゲーム内パラメータを調整できるようにしてみた

Last updated at Posted at 2018-05-26

あらすじ

2018年5月 Oculus Go を買いました。

「Oculus Goヤベェ。 いつでもどこでもVRできる。
しかもUnity使えば簡単に開発できるじゃん! レッツVR開発ライフ!」

ワクワクした思いで、UnityでOculus Go開発を始めました。

VRはPC上でのテストプレイが厳しい

VRコンテンツですが、 PCの画面で見たときとVRで見た時とでは
印象が異なります

VR空間でどのような体験になるかはVRに入らないと詳しくは分からないわけです。

つまり、PCだけではテストプレイができない

テストプレイをするためには、OculusGo用にプロジェクトをビルドしてOculusGoを被ってVRに入る必要があるわけです。

いちいちビルドして確認するのめんどくせぇ。 F***!

実機確認するため何度もビルドすることになるんですが、これが手間になります。

Unityエディタ上で値を変更
→ビルド
数分間待機
→ OculusGoをかぶる
→ Unityエディタ上で値を変更
→ビルド
数分間待機
→ OculusGoをかぶる

これがなかなか時間を食います。

このボールをちょっと遅くしたらどうなるんだろう!みたいな小さい変更を確認するのにもビルド数分待つ必要がある。

めんどくさい

Googleスプレッドシートが使えそう

ここで、Unite2018に行った時に拝見した講演を思い出しました。

【Unite Tokyo 2018】「リトルチャンピオンズ」癖になるアクションゲームの開発事例

ここではGoogleスプレッドシートを使う例やCustomAttributeを使ってツールを自動作成する例が紹介されていました。(スライド資料には載っていませんが、ステージエディタで作成したデータをGoogleスプレッドシートにアップしているという話がありました)

そして私は気が付きました。

「これ、OculusGoの開発にも使えるんじゃね?」

Googleスプレッドシート → OculusGo

まず、Googleスプレッドシートに値を入力。
入力した値をOculusGoで取得。
シートのどの値を取得するかなどはCustomAttributeで設定。

うん、これは簡単につくれそう。

サクッと作ってみました。

SpreadSheet-Load-Attribute

そして、作ったものがコレになります。

「SpreadSheet-Load-Attribute」
https://github.com/rngtm/SpreadSheet-Load-Attribute

使い方

たとえばこんなGoogleスプレッドシートがあったとします。

以下のようなクラスを書くと、メンバ変数の値をGoogleスプレッドシートの値で上書きすることができます。 非常にシンプルですね(自画自賛)

Sample.cs
    [GetSheet]
    public class TestBehaviour : MonoBehaviour
    {
        [GetSheet("光速度")] private int _lightSpeed;
        [GetSheet("重力加速度")] private float _gravity;

[GetSheet]を付けた変数の値がGoogleスプレッドシートの中身の値に置き換わります。

_lightSpeed = 299792458
_gravity = 9.81

クラスに[GetSheet]をつけ忘れると値が変わらないので注意が必要です。

特徴

・シーン開始に最初から配置されているオブジェクトの値を変更
・現時点では、シーン開始から遅れて動的に生成されるオブジェクトには対応していません

感想

一度ビルドしてしまえば、あとはGoogleスプレッドシートの値を変更するだけで簡単にゲームバランスの調整ができます。 

良さそうです。

注意

SpreadSheet-Load-Attributeではシーンに存在する全オブジェクトを取得して
リフレクション経由でコンポーネントの変数の書き換えを行っているため、重いです

リリースビルドには含めないほうが良いでしょう。

あくまでデバッグの用途としてお使いください。

環境

Windows 10
Unity2017.3.0f2

参考URL

Googleスプレッドシートからの数値の取得は下記ブログを参考にさせていただきました。 わかりやすい情報に感謝。
http://toriden.hatenablog.com/entry/2018/04/05/024844

24
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?