Unity2019でScriptableObject 12/1


2020/02/10 構成を記述
2020/11/28 scriptableobjectでの実施結果を記載

こんにちは、コロナです。

adventcalenderの初日としてunityの再度学習としてscriptableobjectから進めていくために、こちらのタイトルにいたしました。

unityのscriptableobjectを作成して、スクショや動画を作成する


# scriptableobjectとは

データ入力用のオブジェクトとして利用することが多いものです。
キャラクターのパラメータなどの雛形として参考になるものとなります。

本家のリンクはこちらから
https://docs.unity3d.com/jp/460/ScriptReference/ScriptableObject.html

ここからは、後日中身を記述していく

# scriptableobjectを作成してみる


今回は、以下のゲームを改修します

「HappyNewYear is Gone」
https://unityroom.com/games/happy_gone

![HappyNewYear is Gone _ フリーゲーム投稿サイト unityroom および他 16 ページ - 個人 - Microsoft​ Edge 2020_11_28 9_09_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45396/49dfb33b-8661-b556-545c-3cfcdb938ca4.png)

# ScriptableObjectのスクリプトを用意する


```c#

using UnityEngine;

[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/GameConfigScriptableObject")]
public class GameConfigScriptableObject : ScriptableObject
{
    public float startCount;
    public int stageLeftPositionX;
    public int stageRightPositionX;
    // 敵キャラクターの移動速度 難易度調整で使う
    public float moveSpeed;
    public int startScore;
    // 弾を打つボタン
    public string bulletButton;
    public float characterSpeed;
    // 敵を倒したときに入るスコア 
    // キャンペーン時に更新をして、定常イベントのように利用したりする
    public int addScore;
    public int startHp;
}



```


# scriptableobjectをCSV形式のようにファイルにする


設定動画

<p class="codepen" data-height="265" data-theme-id="light" data-default-tab="css,result" data-user="sakuriver" data-slug-hash="XWjJWXe" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="XWjJWXe">
  <span>See the Pen <a href="https://codepen.io/sakuriver/pen/XWjJWXe">
  XWjJWXe</a> by サリー(sakuriver)@FF7Rとデススト攻略、ドラクエ3中 (<a href="https://codepen.io/sakuriver">@sakuriver</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>



# プログラム側から参照する

```c#

public class GameManager : MonoBehaviour
{
    public GameObject player;
    public GameObject canvas;
    public GameObject zone;
    public GameObject gone;
    public AudioSource audioSource;
    public AudioClip heiseiClip;
    public AudioClip reiwaClip;
    public AudioClip heartClip;
    public AudioClip scoreAddClip;
    public bool isGameStart;
    public float startCount;

    public string bulletButton;
    public GameConfigScriptableObject gameConfig;

...以下略



```

生成したアセットを選んで、パラメータを調整した動画

<p class="codepen" data-height="265" data-theme-id="light" data-default-tab="css,result" data-user="sakuriver" data-slug-hash="poEvoNR" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="poEvoNR">
  <span>See the Pen <a href="https://codepen.io/sakuriver/pen/poEvoNR">
  poEvoNR</a> by サリー(sakuriver)@FF7Rとデススト攻略、ドラクエ3中 (<a href="https://codepen.io/sakuriver">@sakuriver</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>




*scriptableobject以外、ファイルが変更されていないのを確認

![UnityNengoPrpject - SampleScene - WebGL - Unity 2019.3.0f6 Personal _DX11_ 2020_11_28 8_53_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45396/8ea74257-5608-c882-7251-5b811d10cee6.png)



# 現在のイメージ
![記事向け_イメージ画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45396/e593715d-5ede-c388-9566-bb85d42635ef.png)