基本答え&解説のみ

62
8=GCEùð U`\ÍĉpWnëwōŌU ÝŅ ĥ

Transcript of 基本答え&解説のみ

Page 1: 基本答え&解説のみ

�8=GCEùðU`�\ÍĉpWnë�wōŌU

ÝŅ�ĥ

Page 2: 基本答え&解説のみ

JTBWH

�ØÝŅ�į^ąŀsŏŌÎʼnʼn

���� �.B=GL,7E=DG�oi|mxċWwf�

�³èąŀZ]q °��Íbwd

�ġ·őÎÓ[|įijĿä

ÝŅō

Page 3: 基本答え&解説のみ

問題1 答えHF=B;�.B=GL�8=GCE�

DH6@=7�7@5FF�*H9FG=CB�N

� 2&9BH#G9A���8=GCE�� *H9FG=CB���3� FG5G=7�IC=8�(D9B���� N� � W�W�pÌđ�ć]wbzX� OO

Page 4: 基本答え&解説のみ

問題1 解説2&9BH#G9A���8=GCE�� *H9FG=CB���3

&9BH#G9A�s��GGE=6HG9

)*.��������/���"��!#�$�-'+(�%�������

http://ufcpp.net/study/csharp/sp_attribute.html引用 : ++C++ // 未確認飛行 C

Page 5: 基本答え&解説のみ

問題1 解説2&9BH#G9A���8=GCE�� *H9FG=CB���3

FG5G=7�IC=8�(D9B����N�O

,G5G=7�©���qd~

©���Ûs½mx($

Page 6: 基本答え&解説のみ

問題1 解説2&9BH#G9A���8=GCE�� *H9FG=CB��4;��3

�«²����

Đčāæ Ãňå�²

� 7GE@�wgs�7A8

� F<=:G

� 5@G�wgs�CDG=CB

4 Ãňå�²ďb

ÖĮ�¦²���Ãňå�²�ĪdĐčāæ��ºôrāæÏ

Page 7: 基本答え&解説のみ

問題1 解説2&9BH#G9A���('-�1- �CADCB9BG *H9FG=CB���3

�°����qxĺÔm]~

�°§²�°�Łè

Page 8: 基本答え&解説のみ

問題1 解説2&9BH#G9A���('-�1- &CBC�9<5I=CHE *H9FG=CB���3

��­¤�Łè

Page 9: 基本答え&解説のみ

問題1 解説2&9BH#G9A���('-�1- +=;=86C8L *H9FG=CB���3

+=;=86C8LŁè

Page 10: 基本答え&解説のみ

問題1 解説�FF9GF �E95G9 *H9FG=CB�����¾~ğ

!5A9(6>97G¾~ğ!5A9(6>97G �E95G9�(G<9E *H9FG=CB�

0=B8CJ¾~ğ0=B8CJ *H9FG=CB�

Page 11: 基本答え&解説のみ

½[ķÝV}wd[Ř

問題1 解説

ÝŅŎ

Page 12: 基本答え&解説のみ

問題2 答え1/'+%��+'05�#'0,.�1/'+%��+'05�+%'+$�

-1!)'"�") //��1$/0',+����#'0,.�'+#,36������$+1�0$*���'+#,3��1$/0',+�������/0 0'"�2,'#��-$+�'+#,3������6���������$0�'+#,3 �1$/0',+��������7

����-.'2 0$�/0.'+%�1/$.+ *$�����-.'2 0$�'+0�&-�� 0(�� %'�

����2,'#��+���������6��������1/$.+ *$����#'0,.���� 5,10��$40�'$)#��QM���1/$.+ *$����������&-����#'0,.���� 5,10��+0�)'#$.�������&-���������������� 0(����#'0,.���� 5,10��+0�)'#$.��N��� 0(���������������� %'����#'0,.���� 5,10��+0�)'#$.��>CF<��� %'������������77

Page 13: 基本答え&解説のみ

問題2 解説�8=GCE0=B8CJ�r¾}ăs

ŎĜņV~

�E95G9#BFG5B79��¬�Û����

!9G0=B8CJ��¬�Û����

Page 14: 基本答え&解説のみ

問題2 解説

�8=GCE0=B8CJ��ĒõbĪĚd~

�E95G9#BFG5B79��¬�Û����,<CJ���

ÜuÍbgÎh_Ēõa�~

Page 15: 基本答え&解説のみ

問題2 解説

òeōkb[��8=GCE0=B8CJ�sĒõa�pW

!9G0=B8CJ��¬�Û����

Êľm�,<CJ�\Üt�~

Page 16: 基本答え&解説のみ

問題2 解説

,<CJ.G=@=GL

�E95G9#BFG5B79��¬�Û� �¿Xáń

,<CJ)CDHD ,<CJ�HK0=B8CJ,<CJ�F�ECD�CJB

Đčp��8=GCE0=B8CJ�Ēõą

Page 17: 基本答え&解説のみ

問題2 解説

,<CJ

�¿Xáń

Ļìr��8=GCE0=B8CJ�Ēõą

!9G0=B8CJ��¬�Û�

Page 18: 基本答え&解説のみ

問題2 解説!.#�r¾}ăsŎĜņV~

�8=GCE!.#

�8=GCE!.#%5LCHG

Page 19: 基本答え&解説のみ

問題2 解説!.#�n�!.#%5LCHG�s¿YpWrŘ

¿Ywd

�HGGCB�s��8=GCE!.#�qsďW

Page 20: 基本答え&解説のみ

問題2 解説%569@ =9@8

,@=89E

Page 21: 基本答え&解説のみ

問題2 解説�8=GCE!.#�n��8=GCE!.#%5LCHG�oji�¿Xv]hjgŘ

¸Þs�8=GCE!.#%5LCHG

Page 22: 基本答え&解説のみ

問題2 解説¯����īŃcypW

´

µ

+97G�s.B=GLÄmıĞb{X

Page 23: 基本答え&解説のみ

問題2 解説

½[ķÝV}wd[Ř

ÝŅŏ

Page 24: 基本答え&解説のみ

問題3 答えusing UnityEditor;using UnityEngine;

public class Question3 : EditorWindow{

[MenuItem("Question3/EditorWindow")] static void Open() { GetWindow<Question3>(); }

void OnGUI() { if (Event.current.type == EventType.ContextClick) { GenericMenu genericMenu = new GenericMenu(); genericMenu.AddItem(new GUIContent("CreateCube"), false, () => GameObject.CreatePrimitive(PrimitiveType.Cube)); genericMenu.ShowAsContext(); } }}

Page 25: 基本答え&解説のみ

問題3 解説ĐqđĔ\ďWŁ}�,<CJ�F�CBG9KG

�¿ēd~`n

ħÕm¨��r»ĦqĪĚa�~{Xqp~

Page 26: 基本答え&解説のみ

問題3 解説�ECD�CJB��¿ēd~n]qs

&57n0=B8CJFrļW�÷þd~`n

&57 0=B8CJF �����&,

?DIU=:O8@A8

���� ���&,U=8

Rect ( 0, 0, 100 , 10 )

Page 27: 基本答え&解説のみ

問題3 解説

½[ķÝV}wd[Ř

ÝŅŐ

Page 28: 基本答え&解説のみ

問題4 解答using UnityEditor;

[CustomEditor(typeof(Question4))]public class Question4Inspector : Editor{ public override void OnInspectorGUI() { Question4 question4 = (Question4)target;

question4.username = EditorGUILayout.TextField("名前", question4.username); question4.hp = EditorGUILayout.IntSlider("HP", question4.hp, 0, 10); question4.atk = EditorGUILayout.IntSlider("力", question4.atk, 0, 10); question4.agi = EditorGUILayout.IntSlider("すばやさ", question4.agi, 0, 10); }}

using UnityEngine;

public class Question4 : MonoBehaviour{ public string username; public int hp, atk, agi;}

Page 29: 基本答え&解説のみ

問題4 解説�8=GCE��ģöbg�¬��¾õ

��8=GCEr¶Ĺ

�,9E=5@=M98(6>97G�

�!.#����oXWXŇq�°�¦��²qĪĚd~[

Page 30: 基本答え&解説のみ

問題4 解説

�°�¦��²s�8=GCE��£����\ûĕa�lW~

GameObjectInspector

TransformInspector

CameraInspector

Page 31: 基本答え&解説のみ

問題4 解説�8=GCE��E95G9�8=GCEm�8=GCE�£����Ēõ

GameObject

Transform

Camera

GameObjectInspector

TransformInspector

CameraInspector

Page 32: 基本答え&解説のみ

問題4 解説¸Þs�&CBC,7E=DG�r�8=GCE�£����

Page 33: 基本答え&解説のみ

問題4 解説¸Þs�&CBC,7E=DG�r�8=GCE�£����

MonoScript�8=GCE��E95G9�8=GCE

MonoScriptInspector

Page 34: 基本答え&解説のみ

問題4 解説MonoScript

�8=GCE��E95G9�8=GCEMonoScriptInspector

Editor4Inspector

�HFGCA�8=GCEm¿ēd~�8=GCE�£�����úèd~

Page 35: 基本答え&解説のみ

問題4 解説�°�¦��²r!.#�âĆd~qs�(B#BFD97GCE!.#���²�²¬��

public override void OnInspectorGUI(){ }

Page 36: 基本答え&解説のみ

問題4 解説

½[ķÝV}wd[Ř

ÝŅő

Page 37: 基本答え&解説のみ

問題5 答えusing UnityEngine;

public class Question5 : MonoBehaviour{

public Vector3[] positions = new Vector3[] { new Vector3(0,0,0), new Vector3(-5,0,0), new Vector3(0,5,0), new Vector3(0,0,5), new Vector3(5,-5,5), };

void OnDrawGizmos() { foreach (var position in positions) { Gizmos.DrawWireSphere(position, 0.5f); } }}

wgs

using UnityEngine;

public class Question5 : MonoBehaviour{ public Vector3[] positions = new Vector3[] { new Vector3(0,0,0), new Vector3(-5,0,0), new Vector3(0,5,0), new Vector3(0,0,5), new Vector3(5,-5,5), };}

using UnityEditor;using UnityEngine;

public class Question5Editor{

[DrawGizmo(GizmoType.Active)] static void OnDrawGizmo(Question5 question5, GizmoType type) { foreach (Vector3 position in question5.positions) { Gizmos.DrawWireSphere(position, 0.5f); } }}

Page 38: 基本答え&解説のみ

問題5 解説(25分)

ヒント1は10分後ヒント2は15分後

ŁèėpÌđ (B�E5J!=MACF(B�E5J!=MACF,9@97G98

īŃpíîWÌđ �E5J!=MAC

Page 39: 基本答え&解説のみ

問題5 解説(25分)

ヒント1は10分後ヒント2は15分後

ŁèėpÌđ

Đèr&CBC�9<5I=CHEqêd~!=MAC

īŃpíîWÌđ

&CBC�9<5I=CHEqêd~!=MAC

Page 40: 基本答え&解説のみ

問題5 解説(25分)

ヒント1は10分後ヒント2は15分後

īŃpíîWÌđ

GizmoTypeによって描画を切り替えるオブジェクトがどのような状態なのかを細かく監視

FG5G=7�IC=8���������(B�E5J!=MAC�&CBC�9<5I=CHE�ACBC�9<5I=CHE�!=MAC-LD9�GLD9�

Page 41: 基本答え&解説のみ

問題5 解説

½[ķÝV}wd[Ř

ÝŅŒ

Page 42: 基本答え&解説のみ

問題6�²°¡ª²q)CF=G=CB"5B8@9�ĪĚbpaW

)CF=G=CB"5B8@9rĪĚsDCF=G=CBF�¿ēd~`n

DH6@=7�/97GCE�23�DCF=G=CBF���B9J�/97GCE�23N����B9J�/97GCE����������B9J�/97GCE�����������B9J�/97GCE����������B9J�/97GCE����������B9J�/97GCE�������O�

Page 43: 基本答え&解説のみ

問題6 答え

https://gist.github.com/anchan828/8ce42635b5ce92c90c23

Page 44: 基本答え&解説のみ

問題6 解説"5B8@9Fs

(B,79B9!.#wgs!=MACğr¶mûĕ

³ľÀãV}%=B9ğ

Page 45: 基本答え&解説のみ

問題6 解説

½[ķÝV}wd[Ř

ÝŅœ

Page 46: 基本答え&解説のみ

問題7,7E=DG56@9(6>97G�¾õbpaW

ÂçÇsS�FF9GF *H9FG=CB� *H9FG=CB��5FF9GTnd~

Page 47: 基本答え&解説のみ

問題7 答え

https://gist.github.com/anchan828/a1442127953909d2ea23

Page 48: 基本答え&解説のみ

問題7 解説ScriptableObjectを作成するのは簡単

ただし管理を厳密に

Page 49: 基本答え&解説のみ

問題7 解説

UnityEditor上で値が変更されていてもファイルには保存されていない

データの保存

保存されるタイミングはUnityEditor終了時

Page 50: 基本答え&解説のみ

問題7 解説

すぐデータをファイルに保存するには、EditorUtility.SetDirty & AssetDatabase.SaveAssetsを使用する

データの保存

Keigo Ando
Page 51: 基本答え&解説のみ

問題7 解説

½[ķÝV}wd[Ř

ÝŅŔ

Page 52: 基本答え&解説のみ

問題8 答え

https://gist.github.com/anchan828/fe92724044cb47315dae

Page 53: 基本答え&解説のみ

問題8 解説AssetPostprocessorを継承したクラスインポートされるアセットは全てココを通る

Page 54: 基本答え&解説のみ

問題8 解説サポートされていないアセットのインポート結果を取得するにはOnPostprocessAllAssetsを使用する

ShaderやScriptableObjectなど

Page 55: 基本答え&解説のみ

問題8 解説

½[ķÝV}wd[Ř

ÝŅŕ

Page 56: 基本答え&解説のみ

問題9答え

https://gist.github.com/anchan828/6665d545062d07b8210b

Page 57: 基本答え&解説のみ

問題9解説

��������J<=@9��GEH9���������N������������FGE=B;�F79B9)5E<���������������������������8=GCE.G=@=GL�(D9B =@9)5B9@��,9@97G��88=G=I9�,79B9����FF9GF *H9FG=CB����HB=GL���

������������=:��FGE=B;�#F'H@@(E�ADGL�F79B9)5E<��������������N����������������6E95?�������������O������������F79B9)5G<F��88�F79B9)5E<����������O

EditorUtility.OpenFilePanelはファイルの絶対パスを返すキャンセルされると空文字を返す

キャンセルされるまでファイルを追加する処理

Page 58: 基本答え&解説のみ

問題9解説EditorApplication.OpenSceneAdditiveは絶対パスでは動作しないことに注意

[email protected]=@�!9G)EC>97G+9@5G=I9)5G<mĘê��qâý

:CE957<��I5E�F79B9)5G<�=B�F79B9)5G<F�N����FGE=B;�DEC>97G+9@5G=I9)5G<��� [email protected]=@�!9G)EC>97G+9@5G=I9)5G<�F79B9)5G<�������8=GCE�DD@=75G=CB�(D9B,79B9�88=G=I9�DEC>97G+9@5G=I9)5G<��O

Page 59: 基本答え&解説のみ

問題9 解説

½[ķÝV}wd[Ř

ÝŅōŌ

Page 60: 基本答え&解説のみ

問題10 答え

https://gist.github.com/anchan828/4c18205a5e4a7fa6e316

Page 61: 基本答え&解説のみ

問題10 解説Undo.RegisterCreatedObjectUndo

オブジェクトの生成に関するUndo

Undo.RegisterSceneUndo

シーンに関するUndo

Undo.~Snapshot系オブジェクト操作に関するUndo

Page 62: 基本答え&解説のみ

問題10 解説

½[ķÝV}wd[Ř

Z�}