Unity/Csharp/クラス/基本のソースを表示
←
Unity/Csharp/クラス/基本
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
==クラスやプロパティ== public class CanvasScript : MonoBehaviour { private int cnt = 1; void Start() { Debug.Log("helloworld" + cnt); Add(10, 15) } void Update() { } public int Add(int x, int y) { return x + y; } } メンバはpublicとprivateがあり省略するとprivateになる。 ==単純クラス== public class Animal { private int footCnt = 4; public void Init() { } public void SetFootCnt(int cnt) { footCnt = cnt; } public int GetFootCnt(int cnt) { return cnt; } } ==継承先から継承元のconstructにアクセス== base()を記述 <pre> public class Animal { public Animal() { } } public class Cat : Animal { public Cat() : base() { } } </pre> 参考:https://kan-kikuchi.hatenablog.com/entry/Constructor_Inheritance ==継承と基底クラスのメソッドへのアクセス== base.を使う abstract class Animal { public virtual void Call() { } } class Cat : Animal { public override void Call() { base.Call(); } } ==単純クラスインスタンス生成方法== Animal animal = new Animal(); ===メンバがpublicであるときは、以下のようにも生成可能=== car.cs <pre> public class Car { public string Name = default; public bool IsNew = false; } </pre> main.cs <pre> var car = new Car() { Name = "nsx", IsNew = true }; </pre> ==オブジェクトクラスインスタンス生成方法== GameObject gameObj = new GameObject(); ComScript sc = gameObj.AddComponent<ComScript>(); sc.Exec(); ComScriptはMonoBehaviourを継承している必要がある。 継承てない場合は、以下エラーが出る error CS0311: The type `ComScript' cannot be used as type parameter `T' in the generic type or method `UnityEngine.GameObject.AddComponent<T>()'. There is no implicit reference conversion from `ComScript' to `UnityEngine.Component' ==新規画像インスタンス生成方法== [[Unity/Csharp/画像ロード]] [ショートカット] ==オブジェクトについてるcsを呼び出し実行する方法== GameObject obj = transform.Find ("/mc/mc1").gameObject; ComScript sc = gameObj.GetComponent<ComScript>(); sc.Exec(); ==プロパティ名を文字列に== Debug.Log(nameof(Example.Hoge)); // Hoge ==interface== インターフェイス例 <pre> interface ICharacter { string characterName{get;set;} string characterName2{get;set;} void AnimeInit(); void SetKind(string kind); void AnimePlay(); void AnimeStop(); } </pre> インターフェイス実装 <pre> public class PandaCharacter : ICharacter { public string _characterName = "taro"; public string _characterName2 = "jiro"; string characterName { get => _characterName; set => _characterName = value; } string characterName2 { get => _characterName2; set => _characterName2 = value; } public void AnimeInit() { } public void SetKind(string kind) { } public void AnimePlay() { } public void AnimeStop() { } } </pre> ==interfaceと継承を同時に== 参考:https://qiita.com/chocolamint/items/3fe51eaa7142d2b4f6de ==複数継承する場合== ,で区切る <pre> public class PandaCharacter : MonoBehaviour, ICharacter { } </pre> ==オブジェクト子クラス名取得== Debug.Log("className=" + this.GetType().Name); ==オブジェクトの複製== <pre> public User Clone() { return (User)MemberwiseClone(); } </pre> 参考:https://smdn.jp/programming/netfx/cloning/ ==セッターゲッター== 旧 <pre> public class Player { private string name = "taro"; public string Name { get { return name; } set { name = value; } } } </pre> 新 <pre> public class Name { public string Name { get; set; } = "taro"; } </pre> 新 <pre> private string name = "taro"; public string Name { get => name; set => name = value; } </pre> 新 <pre> private string name = "taro"; public string Name { get => name; set => name = value; } </pre> 参考:https://qiita.com/RyotaMurohoshi/items/d94ed539935dfb2fcdcd ==セッターゲッター関数== <pre> private bool test = false; public bool Test { get { if (test == null) return false; return test; } set { if (test == null) return false; test = value; } } </pre> 参考:https://it-rpa.hatenablog.com/entry/C_%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3_Set_Get ==interfaceを使ったゲッターセッター== ===getのみの場合=== ICar.cs <pre> public interface ICar { string Name { get; } } </pre> Car.cs <pre> public class Car : ICar { private string name = default; public string Name => name; } </pre> ===setとgetの場合=== ICar.cs <pre> public interface ICar { string Name { get; set; } } </pre> Car.cs <pre> public class Car : ICar { private string name = default; public string Name { get => name; set => name = value; } } </pre> ===setとgetとinterfaceとSerializeFieldの場合=== Player.cs <pre> public class Player : IPlayer { [SerializeField] string name = "taro"; public string Name { get { return name; } set { name = value; } } } </pre> IPlayer.cs <pre> public interface IPlayer { string Name { get; set; } } </pre> ==SerializeFieldを使ったプロパティ== <pre> class Hoge { [SerializeField] string url; } </pre> *[SerializeField]をつけると、privateであってもInspectorのところから値を設定できる。 *publicにしても、Inspectorのところから値を設定できるが、他のクラスから変更できるので、Inspectorのところから値を設定するというのを目的にしてるのであれば、SerializeFieldをつけるほうが良い。 *publicやprivateを、省略すると、privateになる 参考:https://qiita.com/makopo/items/8ef280b00f1cc18aec91 ==プロパティ存在有無判定== if (room.GetType().GetProperty("key") == null) ==継承禁止== sealedを使う <pre> sealed class A {} class B : A {} //エラー </pre> ==2つの値を返す場合== <pre> void Start() { var (userName, age) = DoubleFunction(); Debug.Log("userName=" + userName); Debug.Log("userAge=" + age); } (string userName, int age) DoubleFunction() { return ("taro", 19); } </pre> 参考:https://www.create-forever.games/return-tuple/
Unity/Csharp/クラス/基本
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
プログラムメモ
php
flutter
java
android
kotlin
ios
unity
unrealengine
javascript
mysql
sqlite
postgresql
oracle
mroonga
mongodb
flash
electron
cocos2dx
titanium
cpp
ruby
perl
python
accessメモ
rss
html
monaca
cordova
golang
blender
セキュリティ
テストツール
サーバメモ
linux
dotnet
apacheメモ
htaccessメモ
subversion
git
仮想サーバ
ansible
sendgrid
xampp
cacti
mecab
faces
flashpolicyd
fcs
jenkins
運用
デザインメモ
css
ユーザビリティ
ux
サービスメモ
twitter
facebook
instagram
mixi
セカンドライフ
通信ログ横取り
google
ustream
aws
gcp
plesk
azure
vps
AI
その他サービス
便利系メモ
SEO
モバイル
抽象変数名
DDD
クライアント
firefox
chrome
pgp
windows
mac
jmetar
Thunderbird
excel
libreoffice
vpnclient
doxygen
VisualStudioCode
fastlane
metaquest
cmsメモ
mediawiki
pukiwiki
wordpress
その他
資格
IT用語
pvを稼ぐ方法
将棋プログラム
その他
ログイン
ページ内
メインページ
最近の更新
人気のページ
問い合わせ
ツール
リンク元
関連ページの更新状況
ページ情報