強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unity 2019.1 がリリースされました

Unity 2019.1 がリリースされました。

blogs.unity3d.com

ダウンロードリンクはこちら

リリースノートはこちら

 

メジャーどころの機能は他のサイトでも紹介されると思うので敢えてマニアック機能を紹介。

 

Android 向けに AndroidDevice.SetSustainedPerformanceMode という API が追加。

Android: Added AndroidDevice.SetSustainedPerformanceMode to the API to enable/disable sustained performance mode in runtime

こちらは Android 端末で発生する「温度上昇で CPU クロックが下げられたり、冷めてきたらまた元のパフォーマンスに戻ったりする」という動きを抑制し、一定のパフォーマンスを維持する機能のON/OFF設定をする この Android API そのままの API ですね。

 

また、 Android ビルドに必要な SDK と NDK のインストールが Unity エディタインストール時に一緒に行われる様になりました。

Android: Enabled redistributing Android NDK and SDK components with Android Build Support

これで何かと悩まされてた SDK 周りの問題が(おそらく)解消される事になるでしょう。

 

 Unity エディタインストール時に Unity Hub 上でこんな感じで選択できます。

f:id:nakamura001:20190416223226p:plain

 

ECS の環境準備中に 'Unity.PerformanceTesting' のエラー発生

Package Manager から ECS ( Entity Component System ) の環境をインストールすると以下のエラーが発生しました。

Assembly has reference to non-existent assembly 'Unity.PerformanceTesting' (Packages/com.unity.entities/Unity.Entities.PerformanceTests/Unity.Entities.PerformanceTests.asmdef)

 検索するとこちらがヒット。

0.0.12-preview.23: non-existent assembly 'Unity.PerformanceTesting' · Issue #95 · Unity-Technologies/EntityComponentSystemSamples https://github.com/Unity-Technologies/EntityComponentSystemSamples/issues/95 

 対応方法としてはプロジェクトフォルダ内の Packages フォルダに有る manifest.json  に "com.unity.test-framework.performance": "0.1.49-preview" を追記するというものです。

 

この様に追記します。

{
"dependencies": {
"com.unity.test-framework.performance": "0.1.49-preview",
"com.unity.ads": "2.3.1",
"com.unity.analytics": "3.2.2",
"com.unity.burst": "0.2.4-preview.41",
"com.unity.collab-proxy": "1.2.15",

(以下省略)

 

Android アプリの64bit必須化の続報

2019年8月1日より、Google Playで配布されるアプリのアップデートは、ネイティブコードを含むアプリについては、64bitに限定される(追加で32bitコードも可能)。ただしUnity 5.6以前で作成された32bit対応ゲームに関しては、2021年8月までアップデートを受け付ける。

 2021年8月1日より、Google Playでは64bitに対応可能なデバイス上において、ネイティブコードを含むもののなかで、64bit非対応のアプリについては配信を停止する。つまり、これらのアプリは64bit対応デバイスGoogle Play上から提供されなくなる。これにはUnity 5.6以前で作成された32bitのゲームを含む。

Androidが8月から64bitへの移行を本格化 - PC Watch
https://pc.watch.impress.co.jp/docs/news/1164859.html

Google の公式リリース。

Android Developers Blog: Get your apps ready for the 64-bit requirement
https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html

Unity 2018.3.0b11 から JavaScript(UnityScript) と Boo が使えなくなりました

Unity 2018.3.0b11(現在はまだベータ)から JavaScript(UnityScript) と Boo が使えなくなりました。

What's new in Unity 2018.3.0 Beta 11 - Unity
https://unity3d.com/jp/unity/beta/2018.3.0b11

Editor: Removed support for compiling UnityScript and Boo scripts.

「えっ?既に使えなく無い?」と思う人も居るかもしれませんが今までは .js ファイルや .boo ファイルを別途作成して、 Unity のプロジェクトに追加すれば何の問題も無く使えてました。
※メニューから新規作成は出来なくなっていました。

今回からはコンパイル対象のファイルと見なさなく成りました。


試しに既に使用しているプロジェクトを開いてみた所、 Inspector には以下の様に表示されました。もちろん、コードは実行されませんでした。

The associated script can not be loaded.
Please fix any compile errors and assign a valid script

新規に Project ビューから Hierarchy ビューにスクリプトをドラッグした場合にはこの様なダイアログが表示され、追加出来ませんでした。

Can't add script behavior AssemblyInfo. The script needs to derive from MonoBehaviour!

今では C# でプログラムしている人がほとんどだとは思いますが昔作成した自作ライブラリ、 AssetStore で昔買った Asset などには JavaScript のコードが含まれている可能性もあるかと思いますのでその辺りに問題が無いかベータ版のうちにチェックしておくと安心できるのでは無いでしょうか。

JavaScript(UnityScript) を C# に変換

JavaScript(UnityScript) については Unity が公式で unityscript2csharp という変換を行うツールを提供しているのでこちらを試してみるのも良いでしょう。

Unity-Technologies/unityscript2csharp: Tool to convert UnityScript (a.k.a, Javascript in Unity parlance) to C#
https://github.com/Unity-Technologies/unityscript2csharp

【Unity】UnityScriptをC#に変換する unityscript2csharp - テラシュールブログ
http://tsubakit1.hateblo.jp/entry/2017/10/31/223210

「Unity ECS完全に理解した」に参加して来ました

投稿が遅くなりましたが「Unity ECS完全に理解した」に参加して来たのでブログにまとめときます。

公式サイト

Unity ECS完全に理解した - connpass
https://connpass.com/event/101774/

Togetterまとめ

「Unity ECS完全に理解した」関連のつぶやきまとめ - Togetter
https://togetter.com/li/1279958

ECS初学者に向けてのTips集 - @mao

ECS初学者に向けてのTips集 - Google スライド
https://docs.google.com/presentation/d/11ej0BfUxs7eyFeGGplJJR5v-UgVAZt-L-1EBCLLw5FA/mobilepresent?slide=id.g44a2563ed4_0_1

趣味で書いているECSに関するQiitaの記事。

【Unity】ECSで弾幕STGを作ってみたので技術周りについて解説 - Qiita
https://qiita.com/mao_/items/6ad28fc20dda77364e39

【Unity】ECS + JobSystemでライフゲームを実装してみた - Qiita
https://qiita.com/mao_/items/6fc14b36656a29e82d2b

【Unity】PureECSの描画周りについて解説してみる - Qiita
https://qiita.com/mao_/items/c4a217b33a0a94d5d52f

【Unity】PureECSの衝突判定周りについて解説してみる - Qiita
https://qiita.com/mao_/items/ad8a09a9c6403a2e84cf

sugi-cho/Animation-Texture-Baker: 頂点の位置と法線を、Texture2Dに保存しておく。ARGBFloatとか、HDR Textureを使用したバージョン
https://github.com/sugi-cho/Animation-Texture-Baker

【CEDEC2018】CPUを使い切れ!Entity Component System(通称ECS)が切り開く新しいプログラミング - YouTube
https://www.youtube.com/watch?v=T8lGD__aSm8

ECSで作る爆速TrailRenderer - @notargs

ECSで作る爆速TrailRenderer - Google スライド
https://docs.google.com/presentation/d/1PlJKpJTxQ5OQNMBVrWc4TqtrK6iDZCVEBHu1fwmXlxE/mobilepresent?slide=id.p

【Unity】ECS完全に理解した勉強会に登壇しました! - notargs’s blog
http://notargs.hateblo.jp/entry/ecs_kannzenn_rikai

今回のGitHubリポジトリ

notargs/ECSPerfectUnderstand
https://github.com/notargs/ECSPerfectUnderstand

Hybrid ECSで高速Transform更新 - @Es_Program

Hybrid ECSで高速Transform更新 - Google スライド
https://docs.google.com/presentation/d/19LMMoM00gMJb9tTqRBnnOUz8NAOUkshC656bhl9DeTo/mobilepresent?slide=id.p

LT1: PureECSで作ったサンプルを更新した話 - @kakunpc

PureECSで作ったサンプルを更新した話 / かーくん さん - ニコナレ
https://niconare.nicovideo.jp/watch/kn3550

LT2: LTで分かる!アセンブラ(仮) - @tnayuki

LT3: Memory Management of C# with Unity Native Collections - @neuecc

関連情報

【Unity】PureECSの衝突判定周りについて解説してみる - Qiita
https://qiita.com/mao_/items/ad8a09a9c6403a2e84cf

【Unity】ECSの「Disabled ComponentData」と「Prefab ComponentData」について解説してみる - Qiita
https://qiita.com/mao_/items/89306846075f65ce6b50

アプリ内に Unity 式の Readme を置く方法

「Survival Shooter」のチュートリアルを見ていると Inspector にこんな感じの表示がされる Readme が有りました。

Survival Shooter Tutorial - Asset Store
https://assetstore.unity.com/packages/essentials/tutorial-projects/survival-shooter-tutorial-40756

これ、自分でも使えないかな?と仕組みを確認した所、問題無く使えたので手順をメモっておきます。

構造

構造としては ScriptableObject と Inspector での表示方法をカスタマイズする CustomEditor を使って実装されていました。

自分で使う場合

自分でこの Readme の仕組みを使う場合の手順は以下の様になります。

1. 「Survival Shooter Tutorial」をプロジェクトに追加。
2. Assets フォルダから TutorialInfo フォルダ以外のファイルを削除。
3. Assets/TutorialInfo/Scripts/Readme.cs を開き、 class 定義の前に [CreateAssetMenu] を追加。

using System;
using UnityEngine;

[CreateAssetMenu]
public class Readme : ScriptableObject {
	public Texture2D icon;
	public string title;
(以下略)

4. Inspector での拡張表示を一時的に止める為に Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs の [CustomEditor(typeof(Readme))] の記述をコメントアウト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System;
using System.IO;
using System.Reflection;

// [CustomEditor(typeof(Readme))]
[InitializeOnLoad]
public class ReadmeEditor : Editor {
(以下略)

5. Projecrt ビューの上で右クリックし、メニューから Create > Readme と選択し、 .asset ファイルを作成。名前は Readme に変更して保存。
6. 生成されたファイルを選択し、以下の様に入力。

※ Icon には Assets/TutorialInfo/Icons/SurvivalShooter.png を選択。

7. ずっと出てても邪魔なので 3. で追加した [CreateAssetMenu] を削除。
8. 4. でコメントアウトした部分を元に戻す。

作業を行った後に Readme を選択するとこの様に表示されます。

Heading で記述したものが文章のブロックのタイトル、 Text が本文に成っているのが確認できます。
また、 LinkText がリンクのテキストと成っていて、これが記述されていない場合にはリンクそのものが存在していない事が確認できます。

Tips

Readme の作成が終わった後は Assets/TutorialInfo/Layout.wlt は必要ないので削除しておくと多少節約ができます。

TileMap (タイルマップ)の機能の実装状況

Unity には現在、2017.2 で追加された TileMap の機能が実装済みです。

タイルマップ - Unity マニュアル
https://docs.unity3d.com/ja/current/Manual/Tilemap.html

プレビュー版のドキュメントを見てみると Grid コンポーネントの設定で Isometric (クォータービュー) や Hexagonal (六角形)が選択できていた様ですがリリース版ではこれらの機能が見当たりませんでした。

2D Experimental Preview R1 Reference Guide
https://docs.google.com/document/d/1fGYUBPJrJknCsYbAl4z3cOP8x6kealwjZfa2DwcXSgA/

Isometric (クォータービュー)

Hexagonal (六角形)

こちらの中の人のコメントによるとリリース版にはこれらの機能は含まれなかったみたいです。

Isometric Tilemap in 2017.2.0? - Unity Forum
https://forum.unity.com/threads/isometric-tilemap-in-2017-2-0.484182/

なお、 2018.2 では Hexagonal ( Heagon ) については選択できる様になってました。