I have recently updated my Unity Editor from 5.2.2 (I think) to 5.3.1 and a bunch of script errors occurred as a result. NB: scripts are in uJS.
A reoccurring issue seems to be related to the UI Text component. Previous references such as var buttonText = instButton.GetComponentInChildren(Text);now produce the error BCE0019: 'text' is not a member of 'UnityEngine.Component'.
Have tried to resolve this through casting the reference as var buttonText : Text = instButton.GetComponentInChildren(Text);. However this only changes the error message to:
NullReferenceException: Object reference not set to an instance of an object
UnityEngine.UI.Graphic.OnRebuildRequested () (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Graphic.cs:466)
UnityEngine.UI.GraphicRebuildTracker.OnRebuildRequested () (at /Users/builduser/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/GraphicRebuildTracker.cs:33)
UnityEngine.CanvasRenderer.RequestRefresh ()
The cause of which I am not entirely sure, however have read that this may be related to missing scripts in the package (not sure how this could be related to this issue).
If anyone can enlighten me as to why this may be occurring I would be incredibly grateful. Many thanks in advance, Ryan
The issue was due to slack referencing on my part; instead of referencing as var buttonText = instButton.GetComponentInChildren(Text); I should have been using var buttonText : Text = instButton.GetComponentInChildren.<Text>();.
Why this came to be an issue in 5.3.3 I'm not sure, but nonetheless the problem seems to be resolved.
Related
The help text for require-atomic-updates talks exclusively about statements that both set and consume the same variable.
I have some old† code that looks something like this (I think I've included everything that is relevant):
var someFunction = async function someFunction () {
switch(someVariable) {
case 0:
if (maybe) {
await doSomething();
}
break;
case 1:
//similar to above
}
someVariable = 0; // Error detected on this line
return
}
var someVariable = 0;
someFunction is invoked during some event processing later, while someVariable can be adjusted by multiple code paths
As far as I can tell, the line on which the error is reported is an atomic update, it doesn't read the value or set the new value based on anything else.
I can't understand why eslint thinks there is a possible race-condition here?
The code has been functional for a long time now, so I'm happy to just disable the rule on this line to stop it complaining. But I'd like to understand the reason that eslint highlighted it.
† The original code was written long ago, but has been adjusted more recently to be async
If you upgraded to eslint 6.0.1 like I just did, you're encountering a recently introduced bug.
There are several open github issues referencing this bug, but the gist of it is that require-atomic-updates is currently broken.
I recommend downgrading eslint or disabling the rule as a workaround.
Bug reports on the issue here:
https://github.com/eslint/eslint/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+require-atomic-updates
I've been receiving a strange error after hot-reloading my code:
Logs (I'll provide them in text form if needed)
The error references a Notice Range Sphere component. It's just a UDetectionSphere, a simple wrapper for USphereComponent. It used to work correctly, I think the problems begun when I re-parented BaseEnemy from ACharacter to ABaseEntity (see class graph). The game seems to work fine, but the fact that there is an error can't be a good thing. I also can't edit component's properties in editor (both for notice and forget range spheres and for some reason arrow component inherited from ACharacter). Again, it used to work correctly and I was able to edit it. Here's how those components are declared (BaseEnemy.h):
public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Setup")
UDetectionSphere * NoticeRangeSphere;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Setup")
UDetectionSphere * ForgetRangeSphere;
I'm pretty sure the error in logs is a simple fix, but I don't even know where to start looking. I can't find this error in google, so it's probably something trivial I'm overlooking. How do I go about fixing this?
I was facing the MissingMethodExeption while using the reflection method in Xamarin.iOS. My code works fine when Linker Behavior is set to Don't Link. But i am getting the above exception when Linker behavior is set to Link SDK assemblies. I have tried the workaround to set the --linkskip=System.Core but exception raised. Can you please let me know if you have any answer for this problem.
I am getting the error while performing the following operation. Activator.CreateInstance(resultType) as ScriptObject. Here resultType is a Type and ScriptObject is a class which perform some operations for me.
A quick and dirty way to avoid some methods/types to be linked out is to reference them in unused code:
if (false) {
var a = new TypeToPreserve();
a.MethodToPreserve();
}
I have an F# Azure Function that is failing, in a bizarre way, and don't know how to approach fixing the issue. I created a minimum repro of the actual case below. The test function is manually triggered and uses FSharp.Compiler.Service as a dependency, as specified in the project.json below:
{
"frameworks": {
"net46":{
"dependencies": {
"FSharp.Compiler.Service": "11.0.6"
}
}
}
}
The run.fsx file looks like this:
open System
open Microsoft.FSharp.Compiler
open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.Interactive.Shell
let Run(input: string, log: TraceWriter) =
// code here that uses FsiEvaluationSession
// and runs just fine
log.Info "I RAN"
So far, so good. The part that baffles me is that if I add the following function above Run,
// same dependencies as before
open Microsoft.FSharp.Compiler.Interactive.Shell
let foo (longIdent:LongIdent) =
// version 1
// "FOO"
// version 2
// longIdent.ToString ()
// version 3
longIdent |> List.map string
let Run(input: string, log: TraceWriter) =
// same as before
Uncommenting section 1 alone works fine, uncommenting section 2 alone works fine, uncommenting section 3 causes hell to break loose. The function compiles, but running it causes the following exception:
Exception while executing function: Functions.fsc-1. mscorlib: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
... which is puzzling to me, because
foo isn't even called anywhere
the signature and the 2nd version both use LongIdent, so this type doesn't seem to be the source of the problem.
Any suggestion on how to approach the problem, and what the problem itself might be, would be very appreciated - I don't even know where to start, and the same code runs perfectly fine in a local script.
I believe the reason for this is that Azure Functions SDK depend on FSharp.Compiler.Service (FCS) version 9.0.1. This means that when you try to load a different version of FCS, you will get the already loaded version 9.0.1.
This works as long as the public API of the FCS version you are using matches the public API of version 9.0.1, but when there are differences, it will crash, because your code assumes that the public API looks different. I suppose this might be triggering the issue here, although I'm not 100% sure how (possibly, LongIdent is now a different thing than it was in version 9.0.1?)
The very same issue used to happen with FAKE, which also bundles FCS and prevented loading of different versions. One of the options is to rename the assembly to avoid the clash.
I also got the same error, I solved it by doing the following workaround, please refer if it works for you also.
Right-click on the Project and select properties.
Goto Debug tab and create a profile with the reference to the below
screenshot.
Note: Replace UserName with your username.
I'm getting the following output:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[<NSManagedObject 0x21016610> setValue:forUndefinedKey:]: the entity MyEntity is
not key value coding-compliant for the key "aBooleanKey".'
The code that runs before I get the output is the following:
self.name = [managedObject valueForKey:#"name"];
self.language = [managedObject valueForKey:#"language"];
self.ownerID = [managedObject valueForKey:#"ownerID"];
// the following line is the scope of the problem:
self.aBooleanKey = [[managedObject valueForKey:#"aBooleanKey"] boolValue];
For me this looks like a mistyping or something, since all other entity attributes don't cause any problem. But I checked like twelve times and can't find any mistyping or so. It all looks just right. And a week ago it all worked just fine – I didn't change anything here.
Also there are a few other places where I do things with the managedObject and likewise all other attributes work just fine except this one. I tried deleting it in the Core Data store and retyping it, but it didn't solve the problem.
Are there any other reasons for this error?
The problem is quite strange (sometimes works, sometimes not), so I would suggest to change the name of the attribute (e.g. booleanStatus) and verify if the problem still persists or not.
Since you have changed the model you need to remove the app and ricreate it. Alternatively you could perform an automatic migration on Core Data. As you prefer.
Hope it helps.