写在前面:

  • 当前使用的unity版本:5.3.7p4。
  • 如果打开prefab文件是乱码:



    把editer的asset Srialization改为Force Text即可。

一、什么是Prefab

Prefab是unity3d中的一种资源类型,用于存储可重复使用的游戏对象,来方便快捷的创建实例。

通过prefab在场景中创建的所有实例,都会链接到原始的prefab,所以当修改原始的prefab时,所有场景中的所有prefab实例都会被修改。

二、Prefab文件的内容

Prefab文件的内容是通过YAML语言序列化的一个GameObject的对象,包含了这个GameObject的所有描述信息(GameObject信息、Compent实例和属性等)。

三、从一个Cube的Prefab说起

prefab文件的内容

  1. %YAML 1.1
  2. %TAG !u! tag:unity3d.com,2011:
  3. --- !u!1 &101978
  4. GameObject:
  5. m_ObjectHideFlags: 0
  6. m_PrefabParentObject: {fileID: 0}
  7. m_PrefabInternal: {fileID: 100100000}
  8. serializedVersion: 4
  9. m_Component:
  10. - 4: {fileID: 481870}
  11. - 33: {fileID: 3343092}
  12. - 65: {fileID: 6596578}
  13. - 23: {fileID: 2346436}
  14. m_Layer: 0
  15. m_Name: aCube
  16. m_TagString: Untagged
  17. m_Icon: {fileID: 0}
  18. m_NavMeshLayer: 0
  19. m_StaticEditorFlags: 0
  20. m_IsActive: 1
  21. --- !u!4 &481870
  22. Transform:
  23. m_ObjectHideFlags: 1
  24. m_PrefabParentObject: {fileID: 0}
  25. m_PrefabInternal: {fileID: 100100000}
  26. m_GameObject: {fileID: 101978}
  27. m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  28. m_LocalPosition: {x: 384.3385, y: 224.03131, z: 116.32626}
  29. m_LocalScale: {x: 1, y: 1, z: 1}
  30. m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  31. m_Children: []
  32. m_Father: {fileID: 0}
  33. m_RootOrder: 0
  34. --- !u!23 &2346436
  35. MeshRenderer:
  36. m_ObjectHideFlags: 1
  37. m_PrefabParentObject: {fileID: 0}
  38. m_PrefabInternal: {fileID: 100100000}
  39. m_GameObject: {fileID: 101978}
  40. m_Enabled: 1
  41. m_CastShadows: 1
  42. m_ReceiveShadows: 1
  43. m_Materials:
  44. - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
  45. m_SubsetIndices:
  46. m_StaticBatchRoot: {fileID: 0}
  47. m_UseLightProbes: 1
  48. m_ReflectionProbeUsage: 1
  49. m_ProbeAnchor: {fileID: 0}
  50. m_ScaleInLightmap: 1
  51. m_PreserveUVs: 1
  52. m_IgnoreNormalsForChartDetection: 0
  53. m_ImportantGI: 0
  54. m_MinimumChartSize: 4
  55. m_AutoUVMaxDistance: 0.5
  56. m_AutoUVMaxAngle: 89
  57. m_LightmapParameters: {fileID: 0}
  58. m_SortingLayerID: 0
  59. m_SortingOrder: 0
  60. --- !u!33 &3343092
  61. MeshFilter:
  62. m_ObjectHideFlags: 1
  63. m_PrefabParentObject: {fileID: 0}
  64. m_PrefabInternal: {fileID: 100100000}
  65. m_GameObject: {fileID: 101978}
  66. m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
  67. --- !u!65 &6596578
  68. BoxCollider:
  69. m_ObjectHideFlags: 1
  70. m_PrefabParentObject: {fileID: 0}
  71. m_PrefabInternal: {fileID: 100100000}
  72. m_GameObject: {fileID: 101978}
  73. m_Material: {fileID: 0}
  74. m_IsTrigger: 0
  75. m_Enabled: 1
  76. serializedVersion: 2
  77. m_Size: {x: 1, y: 1, z: 1}
  78. m_Center: {x: 0, y: 0, z: 0}
  79. --- !u!1001 &100100000
  80. Prefab:
  81. m_ObjectHideFlags: 1
  82. serializedVersion: 2
  83. m_Modification:
  84. m_TransformParent: {fileID: 0}
  85. m_Modifications: []
  86. m_RemovedComponents: []
  87. m_ParentPrefab: {fileID: 0}
  88. m_RootGameObject: {fileID: 101978}
  89. m_IsPrefabParent: 1

分析其中内容

1.前两行内容是yaml语言的注释

2.接下来是prefab中所有对象的描述信息

每个元素的描述内容以--- !u!n1 & n2开头,其中n1代表元素的类型ID(每个ID的具体含义参考YAML Class ID Reference),n2代表这个元素的本地ID(fileID,在prefab文件中唯一)。

可以看到这个prefab中有GameObject,Transform,MeshRenderer,MeshFilter,BoxCollider,Prefab共6个对象。

除了Prefab对象代表prefab本身的信息,其他5个对象正是一个Cube的构成。

3.第一个GameObject对象的详细说明

<1>--- !u!1 &101978

1代表这是一个GameObject类型的对象,101978是这个GameObject对象在Prefab资源中的fileID。

<2>m_ObjectHideFlags:0

这个元素在Project视图中是否被隐藏,因为prefab中只有这一个GameObject作为根GameObject,所以没被隐藏,值为0。

<3>m_PrefabParentObject: {fileID: 0}

代表场景中的prefab实例与原始prefab资源的链接,当一个prefab实例链接被破坏(删除prefab实例的一个子节点,或修改一个子节点父子关系),或其中的compent被剥离到场景文件中(stripped,比如prefab实例在场景中不是根节点,而是一个GameObject的子节点,那么prefab实例的transtrom就会被剥离到场景文件中,赋予一个fileID,用来描述prefab实例的父子关系)时,生成的对象的m_PrefabParentObject会对应到原始prefab资源中的对象。

在原始prefab资源中,所有对象的m_PrefabParentObject都是0,代表空。

<4>m_PrefabInternal: {fileID: 100100000}

该属性表示这个对象属于哪个prefab对象。

在场景中当一个compent被剥离时,会指向场景中的prefab实例。

在原始prefab资源中,因为prefab中只有一个prefab对象,fileID就是1000100000。

所以在原始prefab资源中,所有对象的m_PrefabInternal值都是{fileID: 100100000}。

Stripped举例:

新建一个叫testStripped的prefab,用一个空的GameObject给它赋值,然后将这个prefab拖到Main Camera下,保存场景文件后查看场景文件内容。

  1. Transform:
  2. m_ObjectHideFlags: 0
  3. m_PrefabParentObject: {fileID: 0}
  4. m_PrefabInternal: {fileID: 0}
  5. m_GameObject: {fileID: 280358070}
  6. m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  7. m_LocalPosition: {x: 0, y: 1, z: -10}
  8. m_LocalScale: {x: 1, y: 1, z: 1}
  9. m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  10. m_Children:
  11. - {fileID: 619871928}
  12. m_Father: {fileID: 0}
  13. m_RootOrder: 0
  14. --- !u!1001 &619871927
  15. Prefab:
  16. m_ObjectHideFlags: 0
  17. serializedVersion: 2
  18. m_Modification:
  19. m_TransformParent: {fileID: 280358075}
  20. m_Modifications:
  21. - target: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  22. propertyPath: m_LocalPosition.x
  23. value: 384.3385
  24. objectReference: {fileID: 0}
  25. - target: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  26. propertyPath: m_LocalPosition.y
  27. value: 223.03131
  28. objectReference: {fileID: 0}
  29. - target: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  30. propertyPath: m_LocalPosition.z
  31. value: 126.32626
  32. objectReference: {fileID: 0}
  33. - target: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  34. propertyPath: m_LocalRotation.x
  35. value: 0
  36. objectReference: {fileID: 0}
  37. - target: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  38. propertyPath: m_LocalRotation.y
  39. value: 0
  40. objectReference: {fileID: 0}
  41. - target: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  42. propertyPath: m_LocalRotation.z
  43. value: 0
  44. objectReference: {fileID: 0}
  45. - target: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  46. propertyPath: m_LocalRotation.w
  47. value: 1
  48. objectReference: {fileID: 0}
  49. - target: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  50. propertyPath: m_RootOrder
  51. value: 0
  52. objectReference: {fileID: 0}
  53. m_RemovedComponents: []
  54. m_ParentPrefab: {fileID: 100100000, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  55. m_IsPrefabParent: 0
  56. --- !u!4 &619871928 stripped
  57. Transform:
  58. m_PrefabParentObject: {fileID: 488654, guid: 617cd7fcc638efd44b4beab357086bc0, type: 2}
  59. m_PrefabInternal: {fileID: 619871927}

查看其中Main Camera的transform,prefab实例和stripped的transform的信息。

发现Main Camera的transform的m_Children属性指向了sttripped的transform,代表Prefab实例是Main Camera的子节点。

sttripped的transform的m_ParentPrefab指向了Prefab资源中对应的transform属性,m_IsPrefabParent指向了场景文件中的Prefab实例。

通过对Preafab的transform剥离到场景文件中,实现了场景中对Prefab实例父子关系的记录。

<5>serializedVersion: 4

序列化的版本,跟unity版本有关,不太确定。

<6>m_Component:

该GameObject包含哪些component,包含的对象用fileID表示。这个GameObject包含了4个Component,分别是Transform,MeshRenderer,MeshFilter,BoxCollider。

<7>m_Layer: 0

GameObject所在的层级。

<8>m_Name: aCube

GameObject的名称。

<9>m_TagString: Untagged

Tag。

<10>m_Icon: {fileID: 0}

图标,fileID为0代表没有图标。

图标会显示在场景中,比如选择这个红色的icon,在场景中就可以看到prefab上出现了一个红色的标签。0代表没有标签。





<11>m_NavMeshLayer: 0



GameObject的NavigationArea属性,与自动寻路有关。

<12>m_StaticEditorFlags: 0

GameObject的Static属性。

<13>m_IsActive: 1

GameObject是否是active状态。

4.接下来四个对象描述了这个GameObject上的4个Component,选择比较有代表性的Transform和MeshFilter进行分析。

Transform:

<1>前三行跟GameObject的含义一样

<2>m_GameObject: {fileID: 101978}

Transoform所属GameObject的fileID。

<3>m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}

记录的Transform的LocalRotation信息,这个是通过四元数表示的,可在debug模式下查看。



<4>m_LocalPosition: {x: 88.257, y: 90.200806, z: 90.15849}

Transform的LocalPosition属性。

<5>m_LocalScale: {x: 1, y: 1, z: 1}

Transform的LocalScale属性。

<6>m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

Transform的LocalEulerAnglesHint属性,在Normal模式下可见。

MeshFilter:

<1>前4行的含义上面已经讲过了

<2>m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}

这代表这个Mesh属性的值是一个外部资源,通过唯一的外部资源guid(每个外部资源的guid保存在同名的.meta文件下)和资源的本地fileID确定了具体的资源对象。

通过对项目中各个引用的外部资源的查看,猜测type的含义为:

0代表unity的内置资源。

2代表Yaml描述的复合类型的外部资源(prefab,animControoller等)。

3代表基础类型的外部资源(image,script等)。

5.prefab对象

<1>前两个说过了

<2>m_Modification:

当一个prefab实例化到场景中的时候,代表场景prefab实例被修改的值,这些值不随原始prefab资源的修改而修改。

在原始prefab资源中是空的。

<3>m_ParentPrefab: {fileID: 0}

在场景中的一个prefab实例中代表这个prefab对应的原始perfab资源中的prefab对象。

在prefab实例中是0。

<4>m_RootGameObject: {fileID: 152762}

prefab资源对应的GameObject。

<5>m_IsPrefabParent: 1

可能是Prefab是资源还是实例的标记,不太确定。

简单总结一下一个prefab的内容

prefab文件并不存储具体资源,而是使用了yaml语言描述了一个被序列化的GameObject对象中包含的所有GameObject,Component的信息。包括相互之间的关系、存储的数据和引用信息。

四、prefab在场景中的使用

1.简单介绍场景文件的内容

一个场景文件也是通过yaml语言序列化的场景内容,一个场景文件不仅包含显示在hierarchy中的GameObject、prefab信息,还包含了场景的设置信息。比prefab稍微复杂一些。

2.prefab文件在场景中的内容

新建一个test场景,将test拖入场景中,然后保存,查看场景中的Prefab实例信息。

  1. --- !u!1001 &131130024
  2. Prefab:
  3. m_ObjectHideFlags: 0
  4. serializedVersion: 2
  5. m_Modification:
  6. m_TransformParent: {fileID: 0}
  7. m_Modifications:
  8. - target: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  9. propertyPath: m_LocalPosition.x
  10. value: 384.3385
  11. objectReference: {fileID: 0}
  12. - target: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  13. propertyPath: m_LocalPosition.y
  14. value: 224.03131
  15. objectReference: {fileID: 0}
  16. - target: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  17. propertyPath: m_LocalPosition.z
  18. value: 116.32626
  19. objectReference: {fileID: 0}
  20. - target: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  21. propertyPath: m_LocalRotation.x
  22. value: 0
  23. objectReference: {fileID: 0}
  24. - target: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  25. propertyPath: m_LocalRotation.y
  26. value: 0
  27. objectReference: {fileID: 0}
  28. - target: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  29. propertyPath: m_LocalRotation.z
  30. value: 0
  31. objectReference: {fileID: 0}
  32. - target: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  33. propertyPath: m_LocalRotation.w
  34. value: 1
  35. objectReference: {fileID: 0}
  36. - target: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  37. propertyPath: m_RootOrder
  38. value: 2
  39. objectReference: {fileID: 0}
  40. m_RemovedComponents: []
  41. m_ParentPrefab: {fileID: 100100000, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  42. m_IsPrefabParent: 0

可以看到一个prefab被实例化到场景中时,没有将prefab资源中内容直接复制到场景中,而是生成了一个prefab对象。

m_ParentPrefab代表这个prefab对应的prefab资源。

m_Modification代表这个prefab实例中属性的修改信息,场景在读取一个prefab实例时,会查看prefab资源中的属性是否在m_Modification中存在,如果存在,则使用m_Modification中保存的值。这样就保证了修改了场景中的prefab实例的属性,不会被prefab资源的修改而覆盖。

正是这两个属性让prefab实例具有了与prefab资源同步修改,但会保存自己特性的功能。

3.Break Prefab Instance

如果我们希望一个prefab实例完全不随prefab的修改而修改,那么我们可以通过Break Prefab Instance选项实现。



将一个prefab实例Break之后,这个prefab就会像一个普通的GameObject存在场景中

  1. --- !u!1 &765230757
  2. GameObject:
  3. m_ObjectHideFlags: 0
  4. m_PrefabParentObject: {fileID: 101978, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  5. m_PrefabInternal: {fileID: 0}
  6. serializedVersion: 4
  7. m_Component:
  8. - 4: {fileID: 765230761}
  9. - 33: {fileID: 765230760}
  10. - 65: {fileID: 765230759}
  11. - 23: {fileID: 765230758}
  12. m_Layer: 0
  13. m_Name: aCube
  14. m_TagString: Untagged
  15. m_Icon: {fileID: 0}
  16. m_NavMeshLayer: 0
  17. m_StaticEditorFlags: 0
  18. m_IsActive: 1
  19. --- !u!23 &765230758
  20. MeshRenderer:
  21. m_ObjectHideFlags: 0
  22. m_PrefabParentObject: {fileID: 2346436, guid: fda6bd048b136f44286b537a5526a83c,
  23. type: 2}
  24. m_PrefabInternal: {fileID: 0}
  25. m_GameObject: {fileID: 765230757}
  26. m_Enabled: 1
  27. m_CastShadows: 1
  28. m_ReceiveShadows: 1
  29. m_Materials:
  30. - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
  31. m_SubsetIndices:
  32. m_StaticBatchRoot: {fileID: 0}
  33. m_UseLightProbes: 1
  34. m_ReflectionProbeUsage: 1
  35. m_ProbeAnchor: {fileID: 0}
  36. m_ScaleInLightmap: 1
  37. m_PreserveUVs: 1
  38. m_IgnoreNormalsForChartDetection: 0
  39. m_ImportantGI: 0
  40. m_MinimumChartSize: 4
  41. m_AutoUVMaxDistance: 0.5
  42. m_AutoUVMaxAngle: 89
  43. m_LightmapParameters: {fileID: 0}
  44. m_SortingLayerID: 0
  45. m_SortingOrder: 0
  46. --- !u!65 &765230759
  47. BoxCollider:
  48. m_ObjectHideFlags: 0
  49. m_PrefabParentObject: {fileID: 6596578, guid: fda6bd048b136f44286b537a5526a83c,
  50. type: 2}
  51. m_PrefabInternal: {fileID: 0}
  52. m_GameObject: {fileID: 765230757}
  53. m_Material: {fileID: 0}
  54. m_IsTrigger: 0
  55. m_Enabled: 1
  56. serializedVersion: 2
  57. m_Size: {x: 1, y: 1, z: 1}
  58. m_Center: {x: 0, y: 0, z: 0}
  59. --- !u!33 &765230760
  60. MeshFilter:
  61. m_ObjectHideFlags: 0
  62. m_PrefabParentObject: {fileID: 3343092, guid: fda6bd048b136f44286b537a5526a83c,
  63. type: 2}
  64. m_PrefabInternal: {fileID: 0}
  65. m_GameObject: {fileID: 765230757}
  66. m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
  67. --- !u!4 &765230761
  68. Transform:
  69. m_ObjectHideFlags: 0
  70. m_PrefabParentObject: {fileID: 481870, guid: fda6bd048b136f44286b537a5526a83c, type: 2}
  71. m_PrefabInternal: {fileID: 0}
  72. m_GameObject: {fileID: 765230757}
  73. m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  74. m_LocalPosition: {x: 384.3385, y: 224.03131, z: 116.32626}
  75. m_LocalScale: {x: 1, y: 1, z: 1}
  76. m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  77. m_Children: []
  78. m_Father: {fileID: 0}
  79. m_RootOrder: 2

每个元素的m_PrefabParentObject都指向了原始prefab资源中对应的对象。



右边的prefab表示也会变为黄色,这代表这个prefab虽然被break了,但是还可以通过与原始prefab资源的链接去select,revert或apply,来变回或修改原来的prefab实例。

prefab内容分析的更多相关文章

  1. Unity3d学习 预设体(prefab)的一些理解

    之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...

  2. Unity3D研究院之Prefab里面的Prefab关联问题

    最近在做UI部分中遇到了这样的问题,就是Prefab里面预制了Prefab.可是在Unity里面一旦Prefab预制了Prefab那么内部的Prefab就失去关联.导致与如果要改内部的Prefab需要 ...

  3. break prefab instance的原理

    prefab可无限apply: 如果把一个模块做成了prefab,这个prefab可能在同一个scene中添加多个,甚至添加到了多个scene中.设所有这些实例为instance(1),instanc ...

  4. Unity5 项目设置 .gitignore 解决 Missing Prefab 问题

    同步Unity工程时候,两边总是出现Missing Prefab问题. 按照网上的教程设置是无效的.  后来Google了一下 才发现 新版Unity和旧版的设置方式是不同的. 1.在 Edit-&g ...

  5. Missing (Mono Script), Missing Prefab

    开始研究Google Cardboard SDK,下载了一份gvr-unity-sdk,用Unity打开里面的Samples: CastleDefense,导出XCode项目在iPhone上面运行,出 ...

  6. Unity中Instantiate一个prefab时需要注意的问题

    在调用Instantiate()方法使用prefab创建对象时,接收Instantiate()方法返回值的变量类型必须和声明prefab变量的类型一致,否则接收变量的值会为null.   比如说,我在 ...

  7. Unity3D Editor模式下批量修改prefab

    最经遇到一个需要批量修改已经做好的prefab的问题,查了一些资料最终实现了但是还是不够完美,通过学习也发现unity的编辑器功能还是非常强大的.废话不多说直接上代码: [ExecuteInEditM ...

  8. Editor扩展之查看Prefab用在那儿

    Prefab查找需求 在项目开发阶段的中后期,工程中有越来越多的Prefab,当我们要修改一个prefab或删除无用的prefab时,或许我们不是那么清楚该prefab在那些场景中使用着或从未使用过, ...

  9. Prefab Assist插件

    资料 Prefab文档: http://game.ceeger.com/Manual/Prefabs.html 基础:基于NGUI制作组件的Prefab 前言 在一个游戏的UI中,有一些通用的组件,比 ...

随机推荐

  1. Jmeter(二十三)_插件扩展

    Jmeter插件管理器 安装插件的方法有两种,一种是传统的方式,即官网下载,本地配置,重启jmeter.现在有一种快捷的方法可以自定义安装插件-插件管理器 JMeter 插件管理器的使用方法很简单:不 ...

  2. jumpserver部署

    1.部署环境.安装依赖包 # yum install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass ...

  3. Kubernetes采用CoreDNS

    参考文档: kubernetes插件:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/coredns 自 ...

  4. HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线

    HyperLedger/Fabric SDK Docker Image 该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container ( ...

  5. Nmap命令

    命令行:(显示扫描过程 -v ) 扫描单个主机 #nmap www.hostName.com 扫描整个ip段(子网) #nmap 192.168.1.1/24 //表示当前ip下的24位掩码主机都要扫 ...

  6. 《Linux内核设计与实现》 第三周 读书笔记

    第一章 Linux内核简介 1. Unix的历史 Unⅸ虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统中最强大和最优秀的系统. Unix强大的根本原因: 简洁 在Unix中所有的东西都被 ...

  7. String基础

    一: String,StringBuffer与StringBuilder的区别??String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程 ...

  8. 第二个Sprint冲刺总结

    第二个Sprint冲刺总结 ( 1)团队Github: https://github.com/ouqifeng/EasyGoOperation.git ( 2 ) 团队贡献分: 廖焯燊:22 何武鹏: ...

  9. 读C#程序(第三周)

    阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ...

  10. 什么是GPS的冷启动、温启动和热启动?

    对于GPS多种启动方式的概念还很模糊,冷启动.热启动.温启动各种专业术语铺天盖地,使得许多用户眼花缭乱. 我们简单从定义上了解一下几种GPS启动的方式,GPS开机启动分为冷启动.温启动.热启动三种. ...