Browse Source

Fixed the C# example code in best_practices/logic_preferences (#2196)

* Fixed the C# example code. The old code didn't compile.
* added missing res:// to the load calls
* Added a C# example of storing a resource in a readonly field
FabiánLC 6 years ago
parent
commit
b6ffae6da1
1 changed files with 14 additions and 14 deletions
  1. 14 14
      getting_started/workflow/best_practices/logic_preferences.rst

+ 14 - 14
getting_started/workflow/best_practices/logic_preferences.rst

@@ -36,7 +36,7 @@ either? Let's see an example:
     # This value is a constant, so it spawns when the Script object loads.
     # This value is a constant, so it spawns when the Script object loads.
     # The script is preloading the value. The advantage here is that the editor
     # The script is preloading the value. The advantage here is that the editor
     # can offer autocompletion since it must be a static path.
     # can offer autocompletion since it must be a static path.
-    const BuildingScn = preload("building.tscn")
+    const BuildingScn = preload("res://building.tscn")
 
 
     # 1. The script preloads the value, so it will load as a dependency
     # 1. The script preloads the value, so it will load as a dependency
     #    of the 'my_buildings.gd' script file. But, because this is a
     #    of the 'my_buildings.gd' script file. But, because this is a
@@ -60,27 +60,27 @@ either? Let's see an example:
     # One must assign constant values to constants. Because `load` performs a
     # One must assign constant values to constants. Because `load` performs a
     # runtime lookup by its very nature, one cannot use it to initialize a
     # runtime lookup by its very nature, one cannot use it to initialize a
     # constant.
     # constant.
-    const OfficeScn = load("office.tscn")
+    const OfficeScn = load("res://office.tscn")
 
 
     # Successfully loads and only when one instantiates the script! Yay!
     # Successfully loads and only when one instantiates the script! Yay!
-    var office_scn = load("office.tscn")
+    var office_scn = load("res://office.tscn")
 
 
   .. code-tab:: csharp
   .. code-tab:: csharp
 
 
     using System;
     using System;
-    using GD;
+    using Godot;
 
 
-    public class MyBuildings : public Node {
-
-        public const PackedScene Building { get; set; }
+    // C# and other languages have no concept of "preloading".
+    public class MyBuildings : Node {
+    
+        //This is a read-only field, it can only be assigned when it's declared or during a constructor
+        public readonly PackedScene Building = ResourceLoader.Load<PackedScene>("res://building.tscn");
         
         
-        public PackedScene ABuilding = GD.load("office.tscn") as PackedScene;
-
-        public void MyBuildings() {
-            // Can assign the value during initialization or during a constructor.
-            Building = ResourceLoader.load("building.tscn") as PackedScene;
+        public PackedScene ABuilding;
 
 
-            // C# and other languages have no concept of "preloading".
+        public override void _Ready() {
+            // Can assign the value during initialization
+            ABuilding = GD.Load<PackedScene>("res://office.tscn");
         }
         }
     }
     }
 
 
@@ -159,4 +159,4 @@ As such, the best options would be...
 
 
 For an example of the various ways one can swap scenes around at runtime,
 For an example of the various ways one can swap scenes around at runtime,
 please see the :ref:`"Change scenes manually" <doc_change_scenes_manually>`
 please see the :ref:`"Change scenes manually" <doc_change_scenes_manually>`
-documentation.
+documentation.