unity

Unity向けのJSON Parserを作成中

いつもJSONUtilやMiniJson+JsonNodeを使うのだけど数値周りのcastで苦しんだので自前でつくることにした。


UnityのSerializedObject
UnityのSerializedObjectのメモ。 PropertyDrawers have two uses: - Customize the GUI of every instance of a Serializable class. - Customize the GUI of script members with custom PropertyAttributes. できることは2つ。 Serializeable classのPropertyDrawerを定義する。 PropertyAttributeを定義して既存のSerializable classのPropertyDrawerを差し替える。 Not Serializableなclassに対してPropertyDrawerを定義することはできぬ(TimeSpanとかね)。 PropertyDrawerを定義してみる using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif public class SampleAttribute : PropertyAttribute { } #if UNITY_EDITOR [CustomPropertyDrawer(typeof(SampleAttribute))] public class SampleDrawer : PropertyDrawer { public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { var sampleAttribute = (SampleAttribute)attribute; Debug.

UnityでToon
Toonシェーダーをやってみる。 メニューからインポートすると、 Assets > Import Package > Effects Assetsが現れる。 Standard Assets/Effects/ToonShading Toon/Lit Standard Assets/Effects/ToonShadingのshaderを自分のフォルダにコピーして改造する。 #UsePassを展開して改造準備 Shader "MyToon/Lit Outline" { Properties { _Color ("Main Color", Color) = (0.5,0.5,0.5,1) _OutlineColor ("Outline Color", Color) = (0,0,0,1) _Outline ("Outline width", Range (.002, 0.03)) = .005 _MainTex ("Base (RGB)", 2D) = "white" {} _Ramp ("Toon Ramp (RGB)", 2D) = "gray" {} } SubShader { Tags { "RenderType"="Opaque" } UsePass "Toon/Lit/FORWARD" UsePass "Toon/Basic Outline/OUTLINE" } Fallback "Toon/Lit" } Toon/Litのinspectorの

UnityのShaderを書いてみる
アルファブレンディング シャドウキャスター シャドウレシーバー なシェーダー。 基本 新規作成 Create -> Shader -> UnLitShader CustomShader Shader "CustomShader" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.

UnityのUsePassを追う
下記のUnityの半透明シェーダーがいったいどういうメカニズムなのかを調べる。 Shaderの元ネタはこちら Unity で Transparent/Diffuse で描画順が崩れてしまう際の対処法 Shader "Transparent/Diffuse ZWrite" { Properties{ _Color("Main Color", Color) = (1,1,1,1) _MainTex("Base (RGB) Trans (A)", 2D) = "white" {} } SubShader{ Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } LOD 200 // extra pass that renders to depth buffer only Pass{ ZWrite On ColorMask 0 } // paste in forward rendering passes from Transparent/Diffuse UsePass "Transparent/Diffuse/FORWARD" } Fallback "Transparent/VertexLit" } 2パス描画になる。

Unity5.3でWebGL
var Module = { TOTAL_MEMORY: 268435456, errorhandler: null, // arguments: err, url, line. This function must return 'true' if the error is handled, otherwise 'false' compatibilitycheck: null, dataUrl: "Release/WebGL.data", codeUrl: "Release/WebGL.js", memUrl: "Release/WebGL.mem", }; こっちが未加工のindex.html。 Unity5.3のWebGLを試してみる。 http://blogs.unity3d.com/jp/2015/12/07/unity-5-3-webgl-updates/ http://docs.unity3d.com/530/Documentation/Manual/webgl-gettingstarted.html とりあえずbuildして動かしてみた。 下記のようなディレクトリ構造で出力されていた。 │ index.html │ ├─Release │ .htaccess │ UnityLoader.js │ WebGL.datagz │ WebGL.jsgz │ WebGL.memgz │ └─TemplateData favicon.ico fullbar.png fullscreen.png loadingbar.png logo.png progresslogo.png style.

Unity開始
Unity開始 仕事の都合もあって、Unityの学習を開始。 だいぶ前にオライリーのUnity本が出たころに少し触っただけなので初見とあまり変わらない。 今奥付、を見たら2011年9月とか書いてあった。 とりあえずUnity4.3をインストールして、 秀和システムの「見てわかるUnityゲーム制作超入門 (Game Developer Books)」 にさらっと目を通した。 これからソフトバンクの「Unityではじめるゲームづくり(DVD付) (ゲープロシリーズ) 」 を読むところ。 MikuMikuDance for Unityではまった で、mmdモデルでもさくっと出してみようとしたところはまったのでそれについてメモ。 コンパイラ エラー CS0241 既定のパラメータ指定子は使用できません が出てしまうと言うもの。 調べたところ、パラメータの規定値は.Net4.0で導入されたものらしいのだが .Net3.5でコンパイルしようとしているのが原因とわかった。 で、手動で.Net4を使うようにしたら治った。 参考 http://ufcpp.net/study/csharp/sp4_optional.html http://vmem.jp/2012/02/16/monodevelop%E3%81%A7%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AEtarget-framework%E3%82%92mono-net-4-0%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B/ ところが別のマシンでやってみたら何事もなくできてしまった。 道理でググっても同じはまりが出てこないわけだ。 古いMonoDevelopの設定が残っているとかあったのか。 2冊目の方を読み始めた。 適当にTerrain書いただけだがわりとそれっぽい感じに。