回答編集履歴

5

追記

2021/09/22 02:58

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -41,3 +41,47 @@
41
41
  - 頻繁にあるとしたらコードが重複していないのか(重複しているならそれを改善すべきでは)
42
42
 
43
43
  - プロパティではなくローカル変数で十分でないか(十分ならプロパティはいらないのでは)
44
+
45
+
46
+
47
+ ### 暗黒のソースコード
48
+
49
+
50
+
51
+ 無理やりまとめてみましたが参考にはしないでください。
52
+
53
+
54
+
55
+ ```C#
56
+
57
+ using UnityEngine;
58
+
59
+
60
+
61
+ public class BaseClass : MonoBehaviour {
62
+
63
+ public Object Parent {
64
+
65
+ get { return transform.parent.gameObject; }
66
+
67
+ set {
68
+
69
+ if(value is GameObject gameObject) {
70
+
71
+ transform.parent.gameObject = gameObject;
72
+
73
+ } else if(value is Transform transform) {
74
+
75
+ transform.parent = transform;
76
+
77
+ }
78
+
79
+ throw new NotImplementedException();
80
+
81
+ }
82
+
83
+ }
84
+
85
+ }
86
+
87
+ ```

4

追記

2021/09/22 02:58

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
File without changes

3

追記

2021/09/22 02:18

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -23,3 +23,21 @@
23
23
  }
24
24
 
25
25
  ```
26
+
27
+
28
+
29
+ > parentがtransformからアクセスしないといけないことがHierarchyの見た目との直感に反する
30
+
31
+
32
+
33
+ Hierarchy とソースコードは同じものではないので無理に合わせる方が直感に反するという考え方もあります。
34
+
35
+
36
+
37
+ 下記の観点からプロパティを作らない方がシンプルな実装になるかもしれません。
38
+
39
+ - そもそも transform.parent と書く事が頻繁にあるのか(ないならローカル変数で十分では)
40
+
41
+ - 頻繁にあるとしたらコードが重複していないのか(重複しているならそれを改善すべきでは)
42
+
43
+ - プロパティではなくローカル変数で十分でないか(十分ならプロパティはいらないのでは)

2

コード修正

2021/09/22 02:18

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -10,15 +10,15 @@
10
10
 
11
11
  public class BaseClass : MonoBehaviour {
12
12
 
13
- public GameObject ParentGameObject => transform.parent?.gameObject;
13
+ public GameObject ParentGameObject => transform.parent?.gameObject;
14
14
 
15
- public Transform ParentTransform {
15
+ public Transform ParentTransform {
16
16
 
17
- get { return transform.parent; }
17
+ get { return transform.parent; }
18
18
 
19
- set { transform.parent = value; }
19
+ set { transform.parent = value; }
20
20
 
21
- }
21
+ }
22
22
 
23
23
  }
24
24
 

1

コード修正

2021/09/22 02:00

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -1,4 +1,4 @@
1
- そもそも GameObject と Transform がどちらも Parent という名前だとややこしいです。
1
+ そもそも GameObject と Transform がどちらも Parent という名前なのはややこしいです。
2
2
 
3
3
  どうしてもプロパティにしたいなら、そのプロパティがどこへアクセスしているのか分かるように名前を付けるべきです。
4
4
 
@@ -10,13 +10,13 @@
10
10
 
11
11
  public class BaseClass : MonoBehaviour {
12
12
 
13
- public GameObject ParentGameObject => this.transform.parent.gameObject;
13
+ public GameObject ParentGameObject => transform.parent?.gameObject;
14
14
 
15
15
  public Transform ParentTransform {
16
16
 
17
- get { return this.transform.parent; }
17
+ get { return transform.parent; }
18
18
 
19
- set { this.transform.parent = value; }
19
+ set { transform.parent = value; }
20
20
 
21
21
  }
22
22