teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

質問の内容に合わせて、答えを編集しました。

2016/06/11 06:32

投稿

urahimono
urahimono

スコア714

answer CHANGED
@@ -1,13 +1,25 @@
1
- **add**クラスの`addInt()`のの宣言で返りでintを返すよう宣言す必要があり
1
+ ソースコードでは`addInt()`のkは渡しなっていため、kの値を変えても渡したiの値は変更されせん
2
+ 値渡しと参照については以下のリンクが分かりやすいと思います。
3
+ [値渡しと参照渡しの違いと使い分け](http://dobon.net/vb/dotnet/beginner/byvalbyref.html)
2
4
 
5
+ 今回の場合は、`addint()`の引数kを参照渡しにすることで渡したiの値にも影響があるようにすることができます。
6
+ C#で参照渡しをする際は**ref**キーワードをつける必要があります。
7
+
3
8
  ```
4
- public class add : MonoBehaviour
9
+ public void addint( int i, int j, ref int k )
5
10
  {
6
- public int addint( int i, int j )
7
- {
8
- return ( i + j );
11
+ k = i + j;
9
- }
10
12
  }
11
13
  ```
12
14
 
15
+ 呼出し元もrefを付けて呼び出す必要があります。
16
+ ```
17
+ void Start ()
18
+ {
19
+ add = GetComponent<add> ();
20
+ add.addint (1,2,ref i);
21
+ Debug.Log (i);
22
+ }
23
+ ```
24
+
13
25
  これで試してみてください。