Globalization









How do I use Globalization
Below are practical examples compiled from projects for learning and reference purposes

Featured Snippets


File name: BlockScript.cs Copy
147  Color HexToColor(string hex)
148  {
149   byte r = byte.Parse(hex.Substring(0,2), System.Globalization.NumberStyles.HexNumber);
150   byte g = byte.Parse(hex.Substring(2,2), System.Globalization.NumberStyles.HexNumber);
151   byte b = byte.Parse(hex.Substring(4,2), System.Globalization.NumberStyles.HexNumber);
152   return new Color32(r,g,b, 255);
153  }
File name: Ref.cs Copy
104         protected TimelineKey GetTimelineKey(XmlElement element, SpriterAnimation animation)
105         {
106             int timeline = element.GetInt("timeline", 0);
107             int key = element.GetInt("key", 0);
108
109             var timelineObj = animation.GetTimeline(timeline);
110             if (timelineObj == null)
111             {
112                 Debug.LogError(String.Format(
113                     System.Globalization.CultureInfo.InvariantCulture,
114                     "Unable to find timeline {0} in animation {1}",
115                     timeline,
116                     animation.Id));
117             }
118             return timelineObj.GetKey(key);
119         }
File name: XmlUtils.cs Copy
45         public static bool TryGetInt(this XmlNode node, string key, out int value)
46         {
47             value = default(int);
48             var attr = node.Attributes[key];
49             bool parsed = false;
50             if (attr != null)
51             {
52                 parsed = int.TryParse(attr.Value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out value);
53             }
54
55             return parsed;
56         }
File name: XmlUtils.cs Copy
58         public static bool TryGetFloat(this XmlNode node, string key, out float value)
59         {
60             value = default(float);
61             var attr = node.Attributes[key];
62             bool parsed = false;
63             if (attr != null)
64             {
65                 parsed = float.TryParse(attr.Value, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out value);
66             }
67
68             return parsed;
69         }
File name: ImportTiled2Unity.Material.cs Copy
19         public Material FixMaterialForMeshRenderer(string objName, Renderer renderer)
20         {
21             string xmlPath = ImportUtils.GetXmlPath(objName);
22
23             XDocument xml = XDocument.Load(xmlPath);
24
25             // The mesh to match
26             string meshName = renderer.name;
27
28             // The mesh name may be decorated by Unity
29             string pattern = @"_MeshPart[\d]$";
30             Regex regex = new Regex(pattern);
31             meshName = regex.Replace(meshName, "");
32
33             var assignMaterials = xml.Root.Elements("AssignMaterial");
34
35             // Find an assignment that matches the mesh renderer
36             XElement match = assignMaterials.FirstOrDefault(el => el.Attribute("mesh").Value == meshName);
37
38             if (match == null)
39             {
40                 // The names of our meshes in the AssignMaterials elements may be wrong
41                 // This happened before when Unity replaced whitespace with underscore in our named meshes
42                 // That case is handled now, but there may be others
43                 StringBuilder builder = new StringBuilder();
44                 builder.AppendFormat("Could not find mesh named '{0}' for material matching\n", renderer.name);
45                 string choices = String.Join("\n ", assignMaterials.Select(m => m.Attribute("mesh").Value).ToArray());
46                 builder.AppendFormat("Choices are:\n {0}", choices);
47
48                 Debug.LogError(builder.ToString());
49                 return null;
50             }
51
52             string materialName = match.Attribute("material").Value;
53             string materialPath = ImportUtils.GetMaterialPath(materialName);
54
55             // Assign the material
56             renderer.sharedMaterial = AssetDatabase.LoadAssetAtPath(materialPath, typeof(Material)) as Material;
57
58             // Set the sorting layer for the mesh
59             string sortingLayer = match.Attribute("sortingLayerName").Value;
60             if (!String.IsNullOrEmpty(sortingLayer) && !SortingLayerExposedEditor.GetSortingLayerNames().Contains(sortingLayer))
61             {
62                 Debug.LogError(string.Format("Sorting Layer \"{0}\" does not exist. Check your Project Settings -> Tags and Layers", sortingLayer));
63                 renderer.sortingLayerName = "Default";
64             }
65             else
66             {
67                 renderer.sortingLayerName = sortingLayer;
68             }
69
70             // Set the sorting order
71             renderer.sortingOrder = ImportUtils.GetAttributeAsInt(match, "sortingOrder");
72
73             // Do we have an alpha color key?
74             string htmlColor = ImportUtils.GetAttributeAsString(match, "alphaColorKey", "");
75             if (!String.IsNullOrEmpty(htmlColor))
76             {
77                 // Take for granted color is in the form '#RRGGBB'
78                 byte r = byte.Parse(htmlColor.Substring(1, 2), System.Globalization.NumberStyles.HexNumber);
79                 byte g = byte.Parse(htmlColor.Substring(3, 2), System.Globalization.NumberStyles.HexNumber);
80                 byte b = byte.Parse(htmlColor.Substring(5, 2), System.Globalization.NumberStyles.HexNumber);
81                 Color color = new Color32(r, g, b, 255);
82                 renderer.sharedMaterial.SetColor("_AlphaColorKey", color);
83             }
84
85             return renderer.sharedMaterial;
86         }

Globalization 128 lượt xem

Gõ tìm kiếm nhanh...